2013-05-28 20 views
2

我在我的視圖模型的屬性稱爲RelativeHeight,這是一種雙重範圍從0到1使用ValueConverter相對於其父的ActualHeight線路和另一視圖模型屬性

在我看來位置上,我有一個水平其寬度與其容器相同(通過Element Binding),但我希望它的垂直位置相對於容器的大小。

例如,如果RelativeHeight0.3,且在容器的ActualHeight200,然後Line.X1Line.X2將每個60

以下代碼是我得到的,但不知道如何使用(或者即使我應該使用第一個地方)一些IValueConverter,因爲通常我無法從視圖中調用Convert方法獲取屬性。 ..

<Line Stroke="Red" Opacity="0.5" StrokeThickness="5" 
     X1="0" X2="{Binding ActualWidth, ElementName=Graphs}" 
     Y1="{Binding RelativeHeight, Converter=MaybeSomeConversion}" 
     Y2="{Binding RelativeHeight, Converter=MaybeSomeConversion}" /> 

回答

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(); 
    } 
} 
相關問題