如何将Listview的最大高度绑定到当前窗口的高度?
我想将高度限制在窗口高度的3/4左右。
我该怎么做?
如何将Listview的最大高度绑定到当前窗口的高度?
我想将高度限制在窗口高度的3/4左右。
我该怎么做?
另一种方法(无需转换器)是将其放置在星型大小的网格中。当然,这会对布局产生一定限制。因此,它取决于其他内容是否可以使用此方法。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="0.25*"/>
</Grid.RowDefinitions>
<ListView Grid.Row="0" VerticalAlignment="Top"/>
<!-- some other content -->
</Grid>
由于您想指定ListView的 MaxHeight ,因此我将 VerticalAlignment
设置为 Top
,这样如果不需要,它就不会使用所有可用的空间。当然,根据您的要求,您也可以将其设置为 Bottom
或 Stretch
。
你可以使用转换器根据窗口高度计算高度,类似于这样...
你需要将Window.ActualHeight传递给转换器-然后它将返回窗口高度乘以0.75。如果由于某种原因,在转换器被触发时,Window.ActualHeight为null(或者您意外地传递了无法转换为double的内容),它将返回double.NaN,这将将高度设置为自动。
public class ControlHeightConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
double height = value as double;
if(value != null)
{
return value * 0.75;
}
else
{
return double.NaN;
}
}
}
将此绑定到您的控件,如下所示...(显然,这是 XAML 的一个非常简化的版本!)
<Window x:Name="MyWindow"
xmlns:converters="clr-namespace:NamespaceWhereConvertersAreHeld">
<Window.Resources>
<ResourceDictionary>
<converters:ControlHeightConverter x:Key="ControlHeightConverter"/>
</ResourceDictionary>
</Window.Resources>
<ListView MaxHeight="{Binding
ElementName=MyWindow, Path=ActualHeight,
Converter={StaticResource ControlHeightConverter}}"/>
</Window>