使WPF ComboBoxes填充整个列宽

sti*_*k81 11 wpf combobox styles

我在制作ComboBox拉伸以填充整个列宽时遇到问题GridViewColumn.调整列大小时也应调整大小.

在下面的例子中,我有StackPanel一个ComboBox内部.这被设置为拉伸并且实际上将拉伸以填充StackPanel宽度.

然后,我添加ListView有一列,包含StackPanel一个ComboBox.无论是StackPanelComboBox被设置为伸展,但他们没有.我使用背景颜色来识别StackPanels 的大小,除非我设置宽度或添加元素以ComboBox使其需要更多宽度,否则没有红色.

我也尝试过HorizontalContentAlignment没有成功的游戏.

<StackPanel Height="59" Margin="45,12,38,0" VerticalAlignment="Top" Background="Green">
    <ComboBox HorizontalAlignment="Stretch" />
</StackPanel>

<ListView x:Name="MyListView" Margin="0,106,0,0">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Num" Width="70">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel Background="red" Orientation="Horizontal" HorizontalAlignment="Stretch">
                            <ComboBox HorizontalAlignment="Stretch" />
                        </StackPanel>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
    <ListViewItem></ListViewItem>
</ListView>
Run Code Online (Sandbox Code Playgroud)

ben*_*wey 16

尝试设置StyleListViewItem.我还删除了你的StackPanel.

<ListView x:Name="MyListView" Margin="0,106,0,0">
    <ListView.Resources>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ListView.Resources>

    <ListView.View>
        <GridView>
            <GridViewColumn Header="Num" Width="170">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>

    <ListViewItem></ListViewItem>
</ListView>
Run Code Online (Sandbox Code Playgroud)

  • 可能会添加添加具有水平方向的周围StackPanel会阻止ComboBox填充整个列... (2认同)