通过变量名绑定到属性(理想情况下来自xaml)

本文关键字:情况下 xaml 理想 变量名 绑定 属性 | 更新日期: 2023-09-27 18:16:43

我正在尝试数据绑定(理想情况下从XAML,因为我知道如何在代码后面做到这一点,但这将远非微不足道的遍历我的重度模板树只是为了)到一个属性谁的名字,我只知道在运行时我想做的和往常不一样:

Content="{Binding TheProperty}"

但是像

Content="{Binding PropertyName=TheNameIsStoredInThisProperty}"

我试图这样做,因为我从模板生成UI时绑定到我的插件,但UI是在一组POCO中指定的,与ViewModel分开,所以我希望能够生成我的UI,仍然能够将其连接到ViewModel上的正确属性,任何建议都是最受欢迎的。

通过变量名绑定到属性(理想情况下来自xaml)

直接的解决方案可能是使用双向的IValueConverter绑定到VM中的任意属性,并且ConverterParameter是包含源属性名称的字符串。一旦进入值转换器,您就可以使用拦截模式从POCO反射出您需要的值。然后,您可以将该值向上传递到VM中的source属性。就像管道一样:)这将工作,但仍然会在POCO更改时通知您。

标记扩展看似合理,但可能很脆弱,并且在性能改进方面没有提供任何帮助。

附加行为仍然让你不得不反射,并且不容易解决源自POCO的通知问题(据我所知只有Unity知道如何做到这一点)。