我有一个Binding
对象,我想知道这个Binding
的父级。
示例:
<Label Name="BindingLabel" Content="{Binding Path=LabelText}"/>
示例Binding
的父级为Label
,名称为 BindingLabel ,我搜索的方式仅从Binding
对象获取。
谢谢!
答案 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>
我没有对代码进行测试,所以我可能会使用绑定声明或其他东西。