1 回答
TA贡献1866条经验 获得超5个赞
我不确定这是否是您想要的,但是Height使用 Window 使 MaxHeight 动态化的一种方法是使用RelativeSource. 让我解释:
在您的Grid中,您将 设置MaxHeight为ActualHeight窗口的。为此,您只需要绑定
MaxHeigth = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=ActualHeight}"
现在,这不是一个很好的解决方案,因为窗口内有边距、填充和更多项目。所以你想要的是Grid使ActualHeight. 因此,您需要一个Converter。
我已经为您制作了这个,它会返回一定百分比的价值。
public class SizePercentageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return 0:
if (parameter == null)
return (double)value;
var split = parameter.ToString().Split('.');
var parameterDouble = double.Parse(split[0]) + double.Parse(split[1]) / Math.Pow(10, split[1].Length);
return (double)value * parameterDouble;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// Don't need to implement this
return null;
}
在ResourceDictionary中定义它之后
<converters:SizePercentageConverter x:Key="PercentageConverter" />
你可以在你的MaxHeight. 例如,如果你希望它是的70%,ActualHeight你只需要写
MaxHeight = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=ActualHeight, Converter={StaticResource PercentageConverter}, ConverterParameter=0.7}"
否则,如果您还可以创建一个减去一个值的转换器。例如,一旦绑定它就返回ActualHeight- parameter。
我希望这会有所帮助,并让我知道进展情况。
- 1 回答
- 0 关注
- 129 浏览
添加回答
举报
