Вы можете использовать конвертер для вычисления высоты на основе высоты окна, что-то вроде этого ...
Вам нужно передать Window.ActualHeight в конвертер - он вернет высоту окна, умноженную на 0,75. Если по какой-либо причине при обращении к конвертеру Window.ActualHeight будет иметь значение null (или вы случайно передали что-то, что не может быть приведено к двойному значению), он вернет 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>