相关疑难解决方法(0)

如何使用WPF从bindingexpression解析绑定对象?

嗨,有没有人知道是否有任何内置的类从bindingexpression解析绑定对象,它的DataItem和属性路径?

我正在尝试为文本框编写Blend 3行为,该行为会自动调用绑定到文本框Text属性的对象上的方法.

文本框绑定到viewmodel类的属性.我想要做的是从绑定表达式解析viewmodel类,然后对此进行调用.

我首先从行为的关联对象中检索绑定表达式,如下所示:

private BindingExpression GetTextBinding()
{
    return this.AssociatedObject.GetBindingExpression(TextBox.TextProperty);
}
Run Code Online (Sandbox Code Playgroud)

完成此操作后,如果我们查看绑定表达式,我们可以看到它通过绑定表达式的DataItem属性引用了数据上下文.

另外,我们有绑定表达式父绑定绑定的属性的相对路径.

所以,我们可以得到这些信息:

var bindingExpression = GetTextBinding();
object dataContextItem = bindingExpression.DataItem;
PropertyPath relativePropertyPath = bindingExpression.ParentBinding.Path;
Run Code Online (Sandbox Code Playgroud)

现在,这个属性路径可能是一个深度嵌套和复杂的路径,我非常希望避免(重新)实现解析.我已经搜索了.NET文档并用反射器围绕组件弹跳,但都无济于事 - 我找不到肯定必须存在的东西 - 必须有一些类来执行数据项目的路径解析(数据上下文).

有谁知道这可能存在的地方?有关解决绑定对象的替代方法的任何建议吗?

注意,我正在尝试获取绑定对象(绑定属性的父节点)(在本例中为字符串) - 我可以很容易地得到绑定值,但它是我需要的父节点.

在此先感谢您的帮助!菲尔

c# data-binding wpf mvvm

21
推荐指数
4
解决办法
2万
查看次数

标签 统计

c# ×1

data-binding ×1

mvvm ×1

wpf ×1