获取Binding的父级
本文关键字:Binding 获取 | 更新日期: 2023-09-27 18:01:12
我有一个Binding
对象,我想知道这个Binding
的父对象。
示例:
<Label Name="BindingLabel" Content="{Binding Path=LabelText}"/>
在示例中,Binding
的父级是名称为"BindingLabel"的Label
,我搜索方法仅从Binding
对象中获取它。
谢谢!
一个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!
}
}
你的问题有点模糊,因为你没有描述你打算用它做什么。如果你想设置标签的特定属性,你可以使用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>
我没有测试代码,所以我可能会放弃绑定声明之类的东西。