J'ai mis un ListView dans la rangée du milieu d'une vue. La vue est contenue dans une fenêtre dont SizeToContent est défini sur WidthAndHeight. Le ListView est initialement vide, mais le ViewModel sous-jacent remplit cette vue de liste dans le processus.Comment empêcher une ListView d'étendre la dimension de la fenêtre?
La hauteur moyenne de Grid.Row est définie sur * pour remplir la taille disponible de la fenêtre. Lorsque ListView reçoit de nouveaux éléments, il agrandit la fenêtre au lieu d'afficher ScrollViewer dans ListView. Comment puis-je empêcher ce comportement que SizeToContent soit défini sur WidthAndHeight, la hauteur Grid.Row sur * mais que ListView ne développe pas les dimensions de la fenêtre?
Voici le code de la fenêtre (la propriété de l'espace de travail contiendra le ViewModel):
<Window x:Class="Views.ContainerWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Title}"
SizeToContent="WidthAndHeight">
<ContentControl Content="{Binding Workspace}"/>
</Window>
La vue de la condition ViewModel ressemble à ceci:
<UserControl x:Class="Views.SomeView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
MinHeight="450">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0"
TextWrapping="Wrap"
Margin="5"
Text="Some description text"/>
<ListView Grid.Row="1"
ItemsSource="{Binding ItemsList}"
Margin="5">
<ListView.View>
<GridView>
...
</GridView>
</ListView.View>
</ListView>
<Button Grid.Row="2"
HorizontalAlignment="Right"
Command" Value="{Binding CloseCommand}"/>
</Grid>
</UserControl>
Merci. C'est en fait la solution que j'ai utilisée. Vous pouvez le voir, si vous développez les commentaires ci-dessus. :) –
@Ninfendo: +1 C'est méchant, merci. J'ai perdu un après-midi à essayer de comprendre cela. – TarkaDaal