1
在WPF中,我有三个对象公开相同的DependencyProperty
(假设它是整数)。我希望所有三个属性值保持同步,即只要对象中的int值发生变化,该值就会传播到另外两个对象。我想multibinding
做这项工作,但我不知道如何检测哪个对象发生了变化,因此应该使用哪个值并将其传播到其他对象。如何将对象中的新属性值分派给其他两个对象的相同属性
编辑:这里是我的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个属性绑定在一起。