我的ViewModel中有一个名为RelativeHeight
的属性,它是一个从0到1的双精度。
在我的视图中,我有一条水平线,其宽度与其容器相同(通过Element Binding
),但我希望它的垂直位置相对于容器的大小。
例如,如果RelativeHeight
为0.3
,而容器的ActualHeight
为200
,则Line.X1
和Line.X2
将为{{ 1}}每个。
以下代码是我得到的,但不知道如何使用(或者即使我应该首先使用)一些60
因为通常我无法从视图中获取属性IValueConverter
方法......
Convert
答案 0 :(得分:0)
用IMultiValueConverter
得到它,就像这样(葡萄牙语中的变量名):
... (resource dictionary)
<views:ConversorNível x:Key="conversorNivel"/>
....
<Line x:Name="line" Stroke="Red" Opacity="0.6" Grid.ColumnSpan="5" StrokeThickness="2"
X1="0" X2="{Binding ActualWidth, ElementName=Gráficos}"
Y2="{Binding Y1, ElementName=line}" >
<Line.Y1>
<MultiBinding Converter="{StaticResource conversorNivel}">
<Binding Path="NívelSelecionado" />
<Binding ElementName="Gráficos" Path="ActualHeight" />
</MultiBinding>
</Line.Y1>
</Line>
和代码隐藏:
public class ConversorNível : IMultiValueConverter {
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (double)values[0] * (double)values[1];
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}