将复杂类绑定到用户控件以重复使用时,“最佳”(或最常用)方法是什么?
我正在尝试为类创建一些可重用的库,我不确定应该使用哪种方法。示例:我想创建一个定义和Address类的地址库(具有属性Line1,Line2等),它的验证逻辑和一个AddressControl,它充当每个属性的绑定字段的查看器/编辑器。
在使用中我可能有一个带有BillingAddress,DeliveryAddress属性的客户类,我想在我的客户控制中绑定这些:
<addressLib:AddressControl [xxx]="{Binding BillingAddress}" />
所以问题是我在XXX中放了什么?
最初我想到在控件上创建一个DependencyProperty'Address':
<addressLib:AddressControl Address="{Binding BillingAddress}" />
但是现在我想我可以使用现有的DataContext属性吗?
<addressLib:AddressControl DataContext="{Binding BillingAddress}" />
这是最好的方法吗?是否有任何问题,例如更新或NotifyPropertyChange问题?
非常感谢你的帮助!答案 0 :(得分:1)
将控件的DataContext设置为模型(在本例中为BillingAddress)是可行的方法。如果您的Control在DataTemplate中用于ItemsControl,那么DataContext当然只是“{Binding}”。
答案 1 :(得分:1)
要记住的一个区别是,使用依赖属性可以获得更改通知,而使用datacontext则不会(至少不会使SL5退出)