gpt4 book ai didi

c# - WPF 我应该如何评估属性路径?

转载 作者:可可西里 更新时间:2023-11-01 09:12:16 25 4
gpt4 key购买 nike

我正在编写一个自定义控件,并且我有一个字符串形式的属性路径(想想 comboBox.SelectedValuePath)。
为任意对象评估此字符串的最佳代码方法是什么?

我显然可以自己解析它,但这是一个 hack,我希望路径支持 comboBox.SelectedValuePath 所做的一切(为了保持一致性)。

结果(感谢 Aran Mulholland):

不确定它的性能,但我现在不太关心性能。

public class BindingEvaluator {
#region Target Class

private class Target : DependencyObject {
public static readonly DependencyProperty ResultProperty = DependencyProperty.Register(
"Result", typeof(IEnumerable), typeof(BindingEvaluator)
);

public object Result {
get { return this.GetValue(ResultProperty); }
set { this.SetValue(ResultProperty, value); }
}
}

#endregion

public object GetValue(object source, string propertyPath) {
var target = new Target();
BindingOperations.SetBinding(target, Target.ResultProperty, new Binding(propertyPath) {
Source = source,
Mode = BindingMode.OneTime
});
return target.Result;
}
}

最佳答案

创建一个对象,该对象具有一个对象类型的依赖属性,以您的属性路径作为路径,以您的任意对象作为源来设置绑定(bind)。绑定(bind)将执行,您可以看到属性路径末尾的内容(如果有的话)。这是我发现在代码中做这种事情的唯一方法。您可以编写一个可以遵循属性路径的递归反射引擎,但它已经完成,我们在绑定(bind)时使用它。花你五分钟写:)

关于c# - WPF 我应该如何评估属性路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2212597/

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