这是我现在的 XAML:
<Window x:Class="GridDemo.SubWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:GridDemo"
d:DataContext="{d:DesignInstance local:ViewModel, IsDesignTimeCreatable=True}"
mc:Ignorable="d"
Title="Window" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ListView
ItemsSource="{Binding Animals}"
SelectedItem="{Binding SelectedAnimal}"
Grid.Row="0"/>
<Button
Command="{Binding AddAnimalCommand}"
Content="Add Animal"
HorizontalAlignment="Right"
Grid.Row="1"/>
<ListView
ItemsSource="{Binding Vegetables}"
SelectedItem="{Binding SelectedVegetable}"
Grid.Row="2"/>
<Button
Command="{Binding AddVegetableCommand}"
Content="Add Vegetable"
HorizontalAlignment="Right"
Grid.Row="3"/>
</Grid>
当我运行时,它显示:
问题马上出现,它使用了太多的垂直空间。
我喜欢并想要保留的一件事是,如果我缩小它以至于它太小而无法完整显示两个列表视图,则列表框会缩小并自动添加滚动条,但无论如何按钮仍然可见。
但主要问题发生在列表视图大小不同时。他们将始终使用一半的可用空间。假设我有 10 只动物和 5 种蔬菜,我的窗户足够高,可以容纳 15 件物品。我希望蔬菜列表视图只要求它需要的空间,让动物列表视图要求所有剩余空间。相反,两个列表视图都要求 50% 的剩余空间,导致动物列表视图太小而蔬菜列表视图太大。
我认为我想要的是列表视图行在有足够空间时表现得像 Height="Auto" ,而在没有足够空间时表现得像 Height="*" 。