2011-09-03 23 views
5

Ho una classe che contiene una proprietà DependencyProperty di sola lettura. Da questa classe, desidero associare in modo leggibile lo DependencyProperty a un altro DepenendencyProperty di sola lettura di un'altra classe (crea l'associazione dal codice).Associare una proprietà DependencyProperty a un altro readonly DependencyProperty

Esiste la possibilità di farlo? SetBinding() sembra non avere un sovraccarico che prende un parametro DependencyPropertyKey come parametro? Né sembra che la classe BindingOperations fornisca tale funzionalità.

La domanda può anche essere formulata: Posso creare un binding per una sola lettura DependencyProperty se ho la DependencyPropertyKey?

+0

Come si suppone che funzioni? Se entrambe le parti non sono in lettura, nemmeno OneWay dovrebbe funzionare in ogni caso, no? –

+1

@ H.B. No, dal momento che ho la chiave di sola lettura DependencyProperty (DependencyPropertyKey), dal punto di vista della mia classe non è readonly. Solo per l'esterno della classe. Qualcosa come il setter privato di una proprietà CLR - è accessibile dall'interno della classe, ma per altre classi è una proprietà di sola lettura. http://msdn.microsoft.com/en-us/library/system.windows.dependencypropertykey.aspx – HCL

+0

Vedo; in qualche modo dubito che possa essere fatto, si potrebbe facilmente registrare un callback modificato da proprietà e impostare il valore manualmente. –

risposta

2

Questo non è possibile perché il metodo FrameworkElement.SetBinding accetta solo un DependencyProperty come primo parametro. Sarebbe stato grandioso se accettasse anche un DependencyPropertyKey. Poiché la chiave non è visibile al di fuori della classe, sarebbe comunque di sola lettura al di fuori della classe, ma all'interno della classe è possibile utilizzarla per un'associazione. Sfortunatamente, questo non è possibile.

0

Qualche suggerimento su come implementarlo?

Si potrebbe tentare di implementare una proprietà di dipendenza RW privata, associare il RO originale ad esso e nella richiamata di RW modificare l'esposizione RO. Ma suona come un hack. Qualche opzione migliore?

Problemi correlati