Как отправить новое значение свойства в объекте к тому же свойству двух других объектов - PullRequest
1 голос
/ 14 марта 2010

В 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);

Но на самом деле, есть ошибка времени выполнения, говорящая о том, что в привязке, установленной последней инструкцией, отсутствует конвертер. Но, опять же, я не знаю, как написать этот конвертер (конвертировать нечего (как это имеет место в соответствующем примере кода MS, связывающего 3 свойства rgb со свойством цвета), только для передачи значения измененного свойства к двум другим свойствам).

Я понимаю, что мог бы решить проблему, создав событие X_Changed в 3 типах, а затем зарегистрировать каждый объект в событии двух других объектов. Мне не нравится этот «ручной» способ, и я бы предпочел связать 3 свойства вместе.

1 Ответ

0 голосов
/ 27 марта 2010

На самом деле никто не смог найти решение в течение 2 недель, поэтому я считаю, что его нет. Иногда это так ...

...