2010-03-14 50 views
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个属性绑定在一起。

回答

0

其实没有人能够在2周内找到解​​决方案,所以我相信没有。有时候就是这样......

相关问题