Faire en sorte que les zones de liste déroulante WPF remplissent une colonne entière
Question
Je ne parviens pas à créer une extension ComboBox
afin de remplir toute la largeur de la colonne dans un GridViewColumn
. Il convient également de redimensionner lorsque la colonne est redimensionnée.
Dans l'exemple suivant, j'ai un StackPanel
avec un ComboBox
à l'intérieur. Ceci est défini pour s’étirer et s’étendra effectivement pour remplir la largeur StackPanel
.
J'ajoute ensuite un ListView
avec une colonne, contenant un StackPanel
avec un ComboBox
. StackPanel
et ComboBox
sont configurés pour s'étirer, mais ils ne le font pas. J'utilise des couleurs d'arrière-plan pour identifier la taille des StackPanel
, et il n'y a pas de rouge sauf si je définis une largeur ou que j'ajoute des éléments à la ComboBox
de sorte qu'il ait besoin de plus de largeur.
J'ai également essayé de jouer avec la propriété HorizontalContentAlignment
sans succès.
<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>
La solution
Essayez de définir le style
du ListViewItem
. J'ai également retiré votre 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>