Fai in modo che le caselle combinate WPF riempiano l'intera larghezza della colonna
Domanda
Sto riscontrando problemi nell'allungare un ComboBox
per riempire l'intera larghezza della colonna in un GridViewColumn
. Dovrebbe inoltre ridimensionare quando viene ridimensionata la colonna.
Nel seguente esempio ho un StackPanel
con un ComboBox
all'interno. Questo è impostato per allungare e in effetti si allungherà per riempire la larghezza StackPanel
.
Quindi aggiungo un ListView
con una colonna, contenente un StackPanel
con un ComboBox
. Sia StackPanel
che ComboBox
sono impostati per allungarsi, ma non lo fanno. Uso i colori di sfondo per identificare la dimensione del StackPanel
e non c'è rosso a meno che non imposti una larghezza o aggiunga elementi al ComboBox
in modo tale che abbia bisogno di più larghezza.
Ho anche provato a giocare con la proprietà HorizontalContentAlignment
senza successo.
<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>
Soluzione
Prova a impostare lo Style
di ListViewItem
. Ho anche rimosso il tuo 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>