2016-05-17 3 views
0

Ich habe zwei Textfelder an einen Schieberegler gebunden. Ich möchte, dass das zweite Textfeld den 1,2-fachen Wert der Folie einnimmt.WPF Textbox Ausdruck Bindungen

<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" /> 

Das heißt, wenn der Schieber 100 zeigt, die erste Textbox (txtCellHeight) sollte 100 zeigen Dies funktioniert gut. Ich möchte die zweite 120 sein.

Ich versuchte die calBinding aber keinen Erfolg. Bitte schlagen Sie einige gute Möglichkeiten vor, dies zu tun.

+2

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

Antwort

1

Verwenden Sie einen Konverter.

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" /> 

Klasse 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(); 
    } 
} 

ich es on the fly getan haben, so wird es vielleicht brauche einige Fixes zum kompilieren.