2009-04-14 210 views
5

我有一组复选框,它们都代表相同类型的不同选择(对于我的示例,它们都是不同的文件类型)。我觉得将每一个绑定到ViewModel中的一个单独的属性是矫枉过正的,我更愿意将它们全部绑定到一个集合,并使用绑定语法通过键将每个复选框绑定到集合中的特定项目。我试图坚持MVVM模式,所以我不只是想懒惰,并处理Checked事件或类似的东西。WPF MVVM绑定Checkbox.IsChecked到一个字典中的命名项<string,bool>

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

回答

3

你几乎拥有了 - 刚刚串门索引参数报价:

{Binding FileTypes[aspx]} 

一个更复杂的数据结构,也只是需要索引的顺序,例如

{Binding Foo[aspx][Bar]} 

顺便说一句,这个东西一个很好的资源是在MSDN,WPF下>数据>数据绑定>绑定声明概述 - 向下滚动到“绑定路径语法”的符号和公约的摘要您可以在绑定路径中使用。