2011-09-03 2 views
5

У меня есть класс, который содержит только зависящую от DependencyProperty. Из этого класса я хочу привязать readonly DependencyProperty к другому readonly DepenendencyProperty другого класса (создать привязку из кода).Привязать readonly DependencyProperty к другому readonly DependencyProperty

Есть ли возможность сделать это? У SetBinding(), похоже, нет перегрузки, которая принимает параметр DependencyPropertyKey в качестве параметра? Также нет класса BindingOperations для обеспечения такой функциональности.

Вопрос также может быть сформулирован: Могу ли я создать привязку для readonly DependencyProperty, если у меня есть DependencyPropertyKey?

+0

Как это должно работать? Если обе стороны только на чтение, даже OneWay не должен работать в любом случае, нет? –

+1

@ H.B. Нет, поскольку у меня есть ключ только для чтения DependencyProperty (DependencyPropertyKey), с точки зрения моего класса он не только для чтения. Только за пределами класса. Что-то вроде private setter CLR-Property - доступно изнутри класса, но для других классов это свойство только для чтения. http://msdn.microsoft.com/en-us/library/system.windows.dependencypropertykey.aspx – HCL

+0

Я вижу; почему-то я сомневаюсь, что это можно сделать, вы можете легко зарегистрировать свойство-измененный-обратный вызов и установить значение вручную. –

ответ

2

Это невозможно, потому что метод FrameworkElement.SetBinding принимает только первый параметр DependencyProperty. Было бы здорово, если бы он принял также DependencyPropertyKey. Поскольку ключ не отображается вне класса, он все равно будет доступен только для чтения вне класса, но изнутри класса вы можете использовать его для привязки. К сожалению, это невозможно.

0

Любые хорошие предложения о том, как реализовать это?

Можно попытаться реализовать частное свойство зависимостей RW, связать исходный RO с ним, а в обратном вызове RW изменить раскрывающийся RO. Но это звучит как хак. Какие-нибудь лучшие варианты?

Смежные вопросы