Faire en sorte que les zones de liste déroulante WPF remplissent une colonne entière

StackOverflow https://stackoverflow.com/questions/826985

  •  05-07-2019
  •  | 
  •  

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>
Était-ce utile?

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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top