2016-05-17 11 views
0

私は2つのテキストボックスをスライダにバインドしています。 2番目のテキストボックスをスライドの値の1.2倍にします。スライダーは100を示したとき、あるWPFテキストボックス式バインディング

<Slider Maximum="500" Minimum="25" TickFrequency="5" IsSnapToTickEnabled="True" Name="slCellHeight" /> 
<TextBox Text="{Binding ElementName=slCellHeight, Path=Value, UpdateSourceTrigger=PropertyChanged}" Width="40" Name="txtCellHeight" /> 
<TextBox Text="{Binding ElementName=slCellHeight, Path=Value, UpdateSourceTrigger=PropertyChanged}" Width="40" Name="txtCellWidth" /> 

、最初のテキストボックス(txtCellHeightは)これが正常に動作している100が表示されるはずです。私は120になるために2番目にしたい。

私はcalBindingを試みたが成功しなかった。それを行うための良い方法を提案してください。

+2

使用IValueConverter https://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter%28v=vs.110%29.aspx –

答えて

1

コンバータを使用してください。

XAML:

<Window.Resources> 
    <local:MultiplyConverter x:Key="MultiplyConverter" /> 
</Window.Resources> 

...

<TextBox Text="{Binding ElementName=slCellHeight, Path=Value, 
UpdateSourceTrigger=PropertyChanged, Converter={StaticResource 
MultiplyConverter}, ConverterParameter=1.2 }" Width="40" Name="txtCellWidth" /> 

クラスMultiplyConverter:

class MultiplyConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     double result; 
     double.TryParse(parameter.ToString(), out result); 
     double mult = (double)value * result; 
     return mult; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

私はその場でそれをやったので、多分それは意志コンパイルするにはいくつかの修正が必要です。

関連する問題