使用DependencyProperty装饰非DependencyObject

时间:2010-05-05 14:24:02

标签: c# wpf

我正在尝试在我的WPF应用程序中绑定到WinForms控件的DataSource属性,但我没有太多运气......

Falafel.com给了它一个机会,但是虽然它声称不需要DependencyObject来执行绑定,但这似乎是唯一的方法。

以前有人这样做过吗?

1 个答案:

答案 0 :(得分:1)

一个。对于非DependencyObject派生的对象,您无权访问SetBinding()ClearBinding()方法。相反,您可以调用静态方法BindingOperations.SetBinding()BindingOperations.ClearBinding()

这是实际绑定源和目标,可以使用静态方法从任何对象完成。

B中。现在关于绑定中涉及的源和目标,有一些约束,你可以read here并总结为:

绑定的目标可以是从DependencyProperty派生的任何可访问属性或元素 - 示例是TextBox控件的Text属性。绑定的源可以是任何公共属性,包括其他控件的属性,公共语言运行时(CLR)对象,XAML元素,ADO.NET数据集,XML片段等。“

反过来DependencyProperty只能在DependencyObject中存在(如果我没有错)。所以目标需要存在DependencyObject,而不是源,而不是创建绑定的对象。

这不完全正确,您也可以使用非DO的目标,查看this page中的代码。

  • 还记得你可以表演一个 反向绑定使用 OneWayToSource类型的绑定。在 这种情况下目标不是一个 DependencyObject