2014-04-30 63 views
2

我有一个Binding对象,我想知道这个Binding的父项。获取绑定的父项

例子:

<Label Name="BindingLabel" Content="{Binding Path=LabelText}"/> 

在示例的Binding父母是Label与名BindingLabel我搜索的方式只能从Binding对象得到它。

谢谢!

回答

1

A Binding可用于多个对象,因此它不能有一个Parent。如果你知道你正在浏览什么对象(例如,你已经有一个列表,或者你可以走一棵树)以及要检查哪些依赖属性,你可以检查该元素是否使用该绑定。

这里是你怎么做,如果你有一个的二手的Binding准确的实例:

Binding binding = // whatever (must be the same instance used in the object) 
IEnumerable<Label> labels = // whatever 
foreach (var label in labels) 
{ 
    if (label.GetBindingExpression(Label.ContentProperty).ParentBinding 
     == binding) 
    { 
     // found it! 
    } 
} 

或者,也许你只是想比较的路径:

var path = "LabelText"; 
IEnumerable<Label> labels = // whatever 
foreach (var label in labels) 
{ 
    if (label.GetBindingExpression(Label.ContentProperty).ParentBinding.Path.Path 
     == path) 
    { 
     // found it! 
    } 
} 
+0

我现在这样做,但我正在寻找方式找到不知道所有的对象。 – igofed

0

你的问题是kindof模糊因为你没有描述你打算如何处理它。如果你想设置标签的特定属性,你可以使用valueconverter。此外,您可以在绑定

<Label> 
    <Label.Content> 
     <MultiBinding Converter="{StaticResource MyConverter}"> 
      <MultiBinding.Bindings> 
      <Binding Path="LabelText" /> 
      <Binding RelativeSource="{RelativeSource Self}"/> 
      </MultiBinding.Bindings> 
     </MultiBinding> 
    </Label.Content> 
</Label> 

我没有测试的代码,所以我可能会关闭与约束力的声明或东西的参考对象本身使用的(多)的RelativeSource =自通。