将Silverlight UserControl绑定到复杂对象

时间:2011-05-24 11:08:29

标签: silverlight data-binding user-controls

将复杂类绑定到用户控件以重复使用时,“最佳”(或最常用)方法是什么?

我正在尝试为类创建一些可重用的库,我不确定应该使用哪种方法。示例:我想创建一个定义和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问​​题?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

将控件的DataContext设置为模型(在本例中为BillingAddress)是可行的方法。如果您的Control在DataTemplate中用于ItemsControl,那么DataContext当然只是“{Binding}”。

答案 1 :(得分:1)

要记住的一个区别是,使用依赖属性可以获得更改通知,而使用datacontext则不会(至少不会使SL5退出)