我正在使用多值转换器来获取行的高度。但是我在高度绑定时收到以下错误(通过窥探看到)。
System.Windows.Data 错误:5:BindingExpression 生成的值对于目标属性无效。Value='33.44444' MultibindingBindingExpression:target element is 'RowDefinition'。目标属性为"高度"(类型为"网格长度")
即使谷歌搜索了很多,我也无法解决这个问题。谁能帮我解决这个问题。
我的行定义:
<Grid.RowDefinitions>
<RowDefinition>
<RowDefinition.Height>
<MultiBinding
Converter="{StaticResource HeightConverter}">
<Binding Path="Height"
RelativeSource="{RelativeSource AncestorType=controls:TestControl,
Mode=FindAncestor}" UpdateSourceTrigger="PropertyChanged"></Binding>
<Binding Path="MR"
RelativeSource="{RelativeSource AncestorType=controls:TestControl,
Mode=FindAncestor}" UpdateSourceTrigger="PropertyChanged"></Binding>
<Binding Path="BR"
RelativeSource="{RelativeSource AncestorType=controls:TestControl,
Mode=FindAncestor}" UpdateSourceTrigger="PropertyChanged"></Binding>
</MultiBinding>
</RowDefinition.Height>
</RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
我的身高转换器代码:
public object Convert(object[] values, Type targetType, object
parameter, CultureInfo culture)
{
var TH = (double)values[0];
var TR = (double)values[1];
var BR = (double)values[2];
var per = TR + BR;
var per2 = (TR/per)*100;
return (int)(per2/TH)*100;
}
感谢和问候
您正在从Converter
返回int
以用于Grid Height
。 应该是GridLength
请参阅下面来自 MSDN
public System.Windows.GridLength Height { get; set; }
Member of System.Windows.Controls.RowDefinition
总结:
获取 System.Windows.Controls.RowDefinition 元素的计算高度,或设置 System.Windows.Controls.RowDefinition 定义的行的 System.Windows.GridLength 值。
返回:
表示行高度的 System.Windows.GridLength。默认值为 1.0。
从您的转换器返回网格长度,如下所示,
return new GridLength(0, GridUnitType.Star); // Or
return new GridLength(per2/TH)*100);