在 WPF 中,我有三个暴露相同DependencyProperty
的对象(假设它是一个整数)。我希望所有三个属性值保持同步,即每当对象中的 int 值发生变化时,该值就会传播到其他两个对象。我multibinding
想做这项工作,但我不知道如何检测哪个对象发生了变化,因此应该使用哪个值并将其传播到其他对象。
编辑:这是我的多绑定暂定代码,错误地希望它可以在没有额外代码的情况下工作:
// create the multibinding
MultiBinding mb = new MultiBinding() {
Mode = BindingMode.TwoWay,
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
};
// create individual bindings to associate object_2 and object_3 to object_1
Binding b2 = new Binding() {
Source = object_2,
Path = new PropertyPath("X")
};
Binding b3 = new Binding() {
Source = object_3,
Path = new PropertyPath("X")
};
// add individual bindings to multibinding
mb.Bindings.Add(b2);
mb.Bindings.Add(b3);
// bind object_2 and _3 to object_1
BindingOperations.SetBinding(object_1, TypeObject_1.XProperty, mb);
但实际上,有一个运行时错误,说最后一条指令设置的绑定缺少转换器。但是我又不知道如何编写这个转换器(没有什么要转换的(因为在将 3 个 rgb 属性链接到颜色属性的相关 MS 代码示例中就是这种情况),只是为了转发更改的属性值到其他两个属性)。
我知道我可以通过在 3 种类型中创建一个 X_Changed 事件来解决问题,然后让每个对象注册到另外两个对象事件。我不喜欢这种“手动”方式,更愿意将 3 个属性绑定在一起。