两个值在WPF中相互依赖

时间:2017-04-23 12:21:02

标签: c# wpf

我想让两个值相互依赖,例如:

first_value = 0.6f then second_value = 0.4f [range: 0.0f to 1.0f], 
so first_value = 1.0f - second_value and second_value = 1.0f - first_value

如何在WPF中执行此操作?以及如何在实时'

中更新它

1 个答案:

答案 0 :(得分:0)

选项1 如果您使用的是MVVM设计模式,那么您可以在ViewModel中使用类似的内容:

public float FirstValue {
    get { return _firstValue; }
    set { 
        _firstValue = value;
        _secondValue = 1 - value;
        OnPropertyChanged("FirstValue");
        OnPropertyChanged("SecondValue");
    }
}

 public float SecondValue {
    get { return _secondValue; }
    set { 
        _secondValue = value;
        _firstValue = 1 - value;
        OnPropertyChanged("FirstValue");
        OnPropertyChanged("SecondValue");
    }
}

或者,

选项2 如果要直接在XAML(UI)中实现此目的 - 您可以添加双向绑定和转换器(IValueConverter)。

例如保持2个滑块实时同步:

<Slider Name="slider1" Value="{Binding ElementName=slider2, Path=Value, Mode=TwoWay, Converter={ StaticResource converter}}" />
<Slider Name="slider2" />

并按照以下方式实施您的转换器:

 public class FirstToSecondConverter : IValueConverter
 {
    public object Convert(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
         // Do the conversion here from first to second value
    }

    public object ConvertBack(object value, Type targetType, 
         object parameter, CultureInfo culture)
    {
         // Do the conversion from second to first value
    }
}