5

我有一组复选框,它们都代表相同类型的不同选择(例如,它们都是不同的文件类型)。我觉得将每个复选框绑定到 ViewModel 中的单个属性是多余的,我更愿意将它们全部绑定到一个集合并使用绑定语法将每个复选框按键绑定到集合中的特定项目。我试图坚持 MVVM 模式,所以我不只是想变得懒惰并处理 Checked 事件或类似的事情。

有没有办法使用 WPF 绑定语法在集合中表达路径或键?例如,如果我Dictionary<string, bool>在 ViewModel 中将调用的 FileTypes 作为公共属性公开,是否有办法将其中一个复选框绑定到 FileTypes["aspx"]?如果我有一个更复杂的数据结构Dictionary<string, Dictionary<string, int>>怎么办?

4

1 回答 1

3

您几乎拥有它 - 只需在 indexer 参数周围加上引号:

{Binding FileTypes[aspx]}

更复杂的数据结构只需要一系列索引器,例如

{Binding Foo[aspx][Bar]}

顺便说一句,MSDN 中有一个很好的资源,在 WPF > Data > Data Binding > Binding Declarations Overview 下——向下滚动到“Binding Path Syntax”,查看可以在绑定路径中使用的符号和约定的摘要.

于 2009-04-14T03:29:18.567 回答