Заставить WPF ComboBox заполнить всю ширину столбца - PullRequest
11 голосов
/ 06 мая 2009

У меня проблемы с растяжением ComboBox, чтобы заполнить всю ширину столбца в GridViewColumn. Также следует изменить размер при изменении размера столбца.

В следующем примере у меня есть StackPanel с ComboBox внутри. Это установлено, чтобы растянуть и фактически растянется, чтобы заполнить StackPanel ширину.

Затем я добавляю ListView с одним столбцом, содержащим StackPanel с ComboBox. И StackPanel, и ComboBox настроены на растяжение, но это не так. Я использую цвета фона, чтобы определить размер StackPanel s, и нет красного, если я не установлю ширину или не добавлю элементы к 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>

1 Ответ

16 голосов
/ 06 мая 2009

Попробуйте установить Style из ListViewItem. Я также удалил вашу 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>
...