将依赖项属性绑定到另一个依赖项属性

时间:2010-06-07 20:50:51

标签: silverlight silverlight-3.0 silverlight-4.0

采用这种情况,我正在使用类似控件的网格:

<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的Data依赖项属性绑定到列的DataMember依赖项属性,以避免多次绑定到相同的数据。我该怎么做?

2 个答案:

答案 0 :(得分:0)

似乎没有简单的方法来完成这项任务。问题是无法将DataTemplate中的某些内容绑定到数据模板之外的内容。您可以找到某种解决方法here

但我认为这不值得这样做。有多个绑定到同一数据有什么问题?

正如他们所说,如果事情如此困难,你可能会采取错误的方式。 您真的需要将自定义控件绑定到整个数据上下文吗? 基本上,当您为网格提供数据源时,它会注意从数据上下文中选择一行并将其设置为模板的DataContext。但是,如果您有充分的理由这样做,那么您应该查看第一段中的链接。

希望这有帮助!

答案 1 :(得分:0)

以下是一些可以帮助您入门的建议。我没有测试过这些,所以如果它们不起作用也不要感到惊讶。

  1. 为MyCustomControl指定一个名称,然后使用绑定中的ElementName属性来引用它。
  2. 使用RelativeSource绑定并将祖先类型设置为MyCustomControl类的类型。
  3. 绑定到RadGrid的属性(如标记),然后尝试绑定到数据模板以从RadGrid的Tag属性中提取。 (警告代码 - 闻!)
  4. 希望您找到适合您的解决方案,请不要忘记回来发布您的答案以帮助我们其他程序员。