在我的应用程序中,我想在运行时创建绑定,每个对象都必须有一个单独的绑定。
例如:我有两个UserControl副本,每个副本都有属性Text,它必须绑定到不同的数据源。
由于Dependency属性是静态的,因此不允许每个实例使用DP,每个类只有一个。
所以我想知道实现它的最佳方法是什么?
答案 0 :(得分:3)
要动态处理数据绑定,请查看BindingOperations静态类。
就使用DP而言,我不确定你在问什么。 DP本身是静态的,但DP的值与每个实例相关联。否则,多个TextBox实例如何具有不同的Text值?绑定也特定于每个实例。
答案 1 :(得分:1)
这两种不同的数据源是不同类型的吗?或者它们是同一类型的两个不同实例?
我问,因为您要求的解决方案 - 在运行时创建绑定 - 可能会不必要地复杂化。您通常不需要在运行时创建绑定来解决您所描述的问题。从你到目前为止所说的关于这个问题的内容来看,这听起来似乎是一个更简单的解决方案。
拥有特定用户控件的多个实例,并且每个实例都绑定到不同的源对象,这是非常常见的。您可以使用Xaml中的普通数据绑定表达式执行此操作。诀窍是依靠DataContext来确定每个用户控件使用哪个特定来源。例如:
<my:MyUserControl DataContext="{Binding Path=Source1}" />
<my:MyUserControl DataContext="{Binding Path=Source2}" />
这将创建自定义用户控件的两个实例,MyUserControl,第一个中的任何绑定将附加到Source1中的任何对象,而第二个将使用Source2。因此,如果MyUserControl.xaml包含这样的内容:
<TextBlock Text="{Binding Path=Name}" />
然后它将绑定到两个不同用户控件实例中两个不同源对象的Name属性。
这解决了您声明的要求,即每个用户控件“必须绑定到不同的数据源。”