我需要在不使用XAML的情况下直接在C#中实现MultiBindings,我知道如何在C#中使用IMultiValueConverter,但是,怎么做:
<MultiBinding Converter="{StaticResource sumConverter}">
<Binding ElementName="FirstSlider" Path="Value" />
<Binding ElementName="SecondSlider" Path="Value" />
<Binding ElementName="ThirdSlider" Path="Value" />
</MultiBinding>
在C#中?
答案 0 :(得分:4)
为什么不使用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")
});
答案 1 :(得分:0)
你有两种方法可以做到这一点到C#侧(我假设你只是不想将MultiBinding直接移植到代码后面,如果你这样做,那真是一个毫无价值的努力,XAML总是更好)< / p>
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;
}