2011-09-03 48 views
5

我有一個包含只讀DependencyProperty的類。從這個類中,我想綁定到只讀DependencyProperty另一個類只讀DepenendencyProperty(從代碼創建綁定)。將只讀DependencyProperty綁定到另一個只讀DependencyProperty

有沒有可能做到這一點? SetBinding()似乎沒有以DependencyPropertyKey作爲參數的重載? BindingOperations -class似乎沒有提供這樣的功能。

這個問題也可以表述爲:如果我有DependencyPropertyKey,我可以創建一個只讀DependencyProperty的綁定嗎?

+0

這應該如何工作?如果雙方都只讀,OneWay無論如何都不應該工作,不是嗎? –

+1

@ H.B。不,因爲我的只讀DependencyProperty(DependencyPropertyKey)的關鍵,從我的課程角度來看,它不是隻讀的。僅限於課外。就像CLR-Property的私有setter一樣 - 它可以從類的內部訪問,但對於其他類,它是隻讀屬性。 http://msdn.microsoft.com/en-us/library/system.windows.dependencypropertykey.aspx – HCL

+0

我明白了;不知何故,我懷疑它可以做到,你可以輕鬆地註冊屬性更改回調,並手動設置值。 –

回答

2

這是不可能的,因爲FrameworkElement.SetBinding方法只接受DependencyProperty作爲其第一個參數。如果它也會接受DependencyPropertyKey,那將會很棒。因爲該鍵在類外部是不可見的,所以在類的外部它仍然是隻讀的,但是在類中您可以使用它來進行綁定。不幸的是,這是不可能的。

0

關於如何實現這一點的任何好建議?

可以嘗試實現私有RW依賴項屬性,將原始RO綁定到它,並在RW的回調中修改公開RO。但是這聽起來像是一個黑客。有更好的選擇嗎?

相關問題