大家好,有没有人知道是否有内置类可以从绑定表达式中解析出绑定对象及其数据项和属性路径?
我试图为文本框编写 Blend 3 行为,该行为会自动调用绑定到文本框 Text 属性的对象上的方法。
文本框绑定到 ViewModel 类的属性。我想要做的是从绑定表达式中解析出 ViewModel 类,然后对其进行调用。
我首先从行为的关联对象中检索绑定表达式,如下所示:
private BindingExpression GetTextBinding()
{
return this.AssociatedObject.GetBindingExpression(TextBox.TextProperty);
}
完成这一步后,如果我们查看绑定表达式,我们可以看到它通过绑定表达式的DataItem属性引用了数据上下文。
此外,我们还有绑定表达式父绑定上绑定的属性的相对路径。
因此,我们可以获取这些信息:
var bindingExpression = GetTextBinding();
object dataContextItem = bindingExpression.DataItem;
PropertyPath relativePropertyPath = bindingExpression.ParentBinding.Path;
现在,这个属性路径可能是一个深度嵌套和复杂的路径,我非常希望避免(重新?)实现它的解析。我已经在.NET文档中搜索并通过反射器来回跳转了所有程序集,但都没有找到我想要的东西 - 必须存在某个类来执行数据项(数据上下文)路径的解析。有人知道这可能存在的位置吗?还有其他解决绑定对象的替代方法吗?
请注意,我正在尝试访问绑定属性(在此为字符串)的父对象 - 我显然可以轻松地访问绑定值,但我需要的是父对象。
提前感谢您的任何帮助! Phil