1

我正在尝试将数据绑定(理想情况下来自 XAML,因为我知道如何在后面的代码中执行此操作,但仅为此遍历我的大量模板化树绝非易事)到我只在运行时知道的名称的属性我会做什么喜欢做的不平常:

Content="{Binding TheProperty}"

但是像

Content="{Binding PropertyName=TheNameIsStoredInThisProperty}"

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

4

1 回答 1

1

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

标记扩展似乎是合理的,但可能很脆弱,并且对性能改进毫无帮助。

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

于 2013-06-04T00:06:07.317 回答