將複雜類綁定到用戶控件以重用時,什麼是「最佳」(或最常用的)方法?將Silverlight UserControl綁定到複雜對象
我想創建一些類的可重用的庫,我不知道我應該使用哪種方法。例子:我想創建一個地址庫,它定義了Address類(具有屬性Line1,Line2等),它是驗證邏輯和一個AddressControl,它充當每個屬性綁定字段的查看器/編輯器。
在使用中我可能有一個客戶類BillingAddress,是DeliveryAddress性質,我想在我的客戶控制從而綁定這些:
<addressLib:AddressControl [xxx]="{Binding BillingAddress}" />
所以,問題是什麼,我把XXX?
起初我還以爲在控制創建一個DependencyProperty「地址」的:
<addressLib:AddressControl Address="{Binding BillingAddress}" />
但現在我想我肯定可以只使用現有的DataContext屬性?
<addressLib:AddressControl DataContext="{Binding BillingAddress}" />
這是最好的方法嗎?是否有任何問題,例如更新或NotifyPropertyChange問題?
非常感謝您的幫助!
感謝您的警告 - 我想我可能會從控件中引發事件來指示更改。 – Quango 2011-05-25 15:13:49
我已經將此更改爲正確答案,因爲使用DataContext不可靠,因爲您沒有收到更改通知。雖然它沒有錯,但它使控件成爲一次性綁定,並且如果父控件更改了datacontext,它將不會更新。這是一個相當有限的用例恕我直言,所以依賴屬性方法是正確的。 – Quango 2011-08-12 08:43:00
如果有人有興趣這個答案:http://stackoverflow.com/questions/421581/silverlight-binding-a-child-controls-property-to-a-property-in-a-user-control/2528018#2528018演示控制中綁定值的最佳方法。 – Quango 2011-08-12 10:09:06