gpt4 book ai didi

wpf - 直接设置绑定(bind)值

转载 作者:行者123 更新时间:2023-12-04 12:35:11 24 4
gpt4 key购买 nike

是否可以在不知道绑定(bind)属性的情况下直接设置双向绑定(bind)后面的值?

我有一个附加属性,它绑定(bind)到这样的属性:

<Element my:Utils.MyProperty="{Binding Something}" />

现在我想更改有效存储在 Something 中的值从附属物的角度来看。所以我不能直接访问绑定(bind)的属性,而只能引用 DependencyObject (即 Element 实例)和 DependencyProperty对象本身。

通过 DependencyObject.SetValue 简单设置时的问题是这有效地删除了绑定(bind),但我想更改底层的绑定(bind)属性。

使用 BindingOperations我可以得到 BindingBindingExpression .现在有没有办法访问它背后的属性并改变它的值?

最佳答案

好的,我现在自己在绑定(bind)表达式上使用了一些反射技巧解决了这个问题。

我基本上查看绑定(bind)路径和响应数据项并尝试自己解决绑定(bind)。对于更复杂的绑定(bind)路径,这可能会失败,但对于我上面示例中的简单属性名称,这应该可以正常工作。

BindingExpression bindingExpression = BindingOperations.GetBindingExpression(dependencyObj, dependencyProperty);
if (bindingExpression != null)
{
PropertyInfo property = bindingExpression.DataItem.GetType().GetProperty(bindingExpression.ParentBinding.Path.Path);
if (property != null)
property.SetValue(bindingExpression.DataItem, newValue, null);
}

关于wpf - 直接设置绑定(bind)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11121057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com