获取Binding的父级

时间:2014-04-30 14:37:30

标签: c# wpf binding

我有一个Binding对象,我想知道这个Binding的父级。

示例:

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

示例Binding的父级为Label,名称为 BindingLabel ,我搜索的方式仅从Binding对象获取。

谢谢!

2 个答案:

答案 0 :(得分:1)

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!
    }
}

答案 1 :(得分:0)

你的问题很模糊,因为你没有描述你打算用它做什么。如果要设置标签的特定属性,可以使用valueconverter。此外,您可以通过在(多)绑定

中使用RelativeSource = Self来传递对象本身的引用
<Label> 
   <Label.Content> 
      <MultiBinding Converter="{StaticResource MyConverter}"> 
          <MultiBinding.Bindings> 
             <Binding Path="LabelText" /> 
             <Binding RelativeSource="{RelativeSource Self}"/> 
          </MultiBinding.Bindings> 
       </MultiBinding> 
   </Label.Content> 
</Label> 

我没有对代码进行测试,所以我可能会使用绑定声明或其他东西。