我将 ListView 放在 View 的中间行。该视图包含在 SizeToContent 设置为 WidthAndHeight 的窗口中。 ListView 最初是空的,但底层 ViewModel 在此过程中填充了此列表视图。
中间的 Grid.Row 高度设置为 * 以填充窗口的可用大小。当 ListView 接收到新项目时,它会在某个时刻扩大窗口大小,而不是在 ListView 中显示 ScrollViewer。如何防止这种行为将 SizeToContent 设置为 WidthAndHeight,将 Grid.Row 高度设置为 * 但不让 ListView 扩展窗口尺寸?
这是窗口的代码(Workspace 属性将包含 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>
所提供的 ViewModel 的视图如下所示:
<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>
加载后关闭窗口自动调整大小对您有用吗?
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.SizeToContent = SizeToContent.Manual;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)