1

在 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 个属性绑定在一起。

4

1 回答 1

0

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

于 2010-03-26T22:41:28.763 回答