自定义控件和DependencyProperty

时间:2009-07-22 05:15:47

标签: wpf binding controls

我创建了一个自定义控件,在内部使用BindingList来跟踪在某个自定义网格中显示的Account对象。我想在我的控件中添加一个DependencyProperty,它将为List公开set / get,这将允许我在我的控件和数据模型之间进行TwoWay绑定。我希望能够设置该列表来初始化我的控件,并获得更新BindingList所产生的更新。简而言之,我需要以某种方式提供来自DependencyProperty的List和我的内部BindingList之间的转换,反之亦然(取决于我的控件最初是从数据源绑定的,还是根据我控件中BindingList的更改来更新数据源)。

我在网上找到的示例处理控件直接使用DependencyProperties上设置的列表 - 在我的情况下,我希望有一个层次的间接,因为BindingList不一定与DependencyProperty中的列表相同。

2 个答案:

答案 0 :(得分:0)

怎么来BindingList不一样?这不是C#的工作方式:

myControl1.List = list1;

根据定义,上面的含义是将属性设置为值,设置后应该是相同的。

虽然你可以在普通C#类的setter中创建一个有趣的逻辑,但DependencyProperty是预定义的概念,你将无法从理智中转移。

答案 1 :(得分:0)

我在内部使用的BindingList与我尝试公开的DependencyProperty上的列表不同,因为我不想将内部实现暴露给外部属性。

在复杂控件中,可能有多个网格等需要拥有自己的BindingLists来保存数据。我的DependencyProperty将用于: 1)用一些数据初始化自定义控件 2)根据用户输入将新列表设置回模型。