WPF MultiBindings

我需要在不使用XAML的情况下直接在C#中实现MultiBindings,我知道如何在C#中使用IMultiValueConverter,但是,如何做:

     

在C#?

为什么不使用XAML?

以下代码应该工作:

 MultiBinding multiBinding = new MultiBinding(); multiBinding.Converter = converter; multiBinding.Bindings.Add(new Binding { ElementName = "FirstSlider", Path = new PropertyPath("Value") }); multiBinding.Bindings.Add(new Binding { ElementName = "SecondSlider", Path = new PropertyPath("Value") }); multiBinding.Bindings.Add(new Binding { ElementName = "ThirdSlider", Path = new PropertyPath("Value") }); 

你有两种方法可以做到这一点到C#侧(我假设你只是不想将MultiBinding直接移植到代码后面,如果你这样做,那真是一个毫无价值的努力,XAML总是更好)

  1. 简单的方法是为3个滑块创建ValueChanged事件处理程序并计算其中的总和并分配给所需的属性。

2。 其次,在WPF中处理这些问题的最佳方法是使应用程序成为MVVM风格。(我希望你知道MVVM)。 在ViewModel类中,您将拥有3个不同的属性。 而且你在课堂上还需要另一个’Sum’属性。 每当调用其他3个属性设置器时,将重新评估Sum。

 public double Value1 { get { return _value1;} set { _value1 = value; RaisePropertyChanged("Value1"); ClaculateSum(); } } public double Sum { get { return _sum;} set { _sum= value; RaisePropertyChanged("Sum"); } } public void CalculateSum() { Sum = Value1+Value2+Value3; }