绑定依赖属性到另一个依赖属性
问题描述:
把这个场景,我与像控制网格工作:绑定依赖属性到另一个依赖属性
<RadGrid DataContext={Binding someDataContextObject, Mode=OneWay}>
<RadGrid.columns>
<RadGrid.Column Header="Column Header"
DataMember="{Binding dataContextObjectProperty, Mode=OneWay}">
[...]
<DataTemplate>
<MyCustomControl Data="{Binding ???}" />
</DataTemplate>
<\RadGrid.Column>
</RadGrid.columns>
</RadGrid>
我想MyCustomControl的数据依赖属性绑定到列的数据成员依赖属性以避免多个绑定到相同的数据。我该怎么做?
答
似乎没有简单的方法来完成这项任务。问题在于无法将DataTemplate中的某些内容绑定到数据模板之外的某些内容。你可以找到某种解决方法here。
但我不认为这是值得的那种努力。有多个绑定到相同数据的问题是什么?
正如他们所说如果某件事情如此困难,可能是您以错误的方式行事。 你真的需要将自定义控件绑定到整个数据上下文吗? 基本上,当你给网格的数据源时,它会照顾从你的数据上下文中选择一行,并将它设置为你的模板的DataContext。但是,如果你有这样一个很好的理由,你应该检查第一段的链接。
希望这会有所帮助!
答
这里有几个想法给你一个开始。我没有测试过这些,所以如果他们不工作,不要感到惊讶。
- 给你的MyCustomControl一个名字,然后在你的绑定中使用ElementName属性来引用它。
- 使用RelativeSource绑定并将祖先类型设置为MyCustomControl类的类型。
- 绑定到RadGrid的属性(如标记),然后尝试绑定数据模板以从RadGrid的Tag属性中拉出。 (警告代码 - 异味!)
希望你找到适合你的解决方案,请不要忘记回来发布你的答案,以帮助我们其他人的程序员。