Ric*_*ich 5 .net c# wpf mvvm binding-expressions
我有一组复选框,它们都代表相同类型的不同选择(对于我的例子,它们都是不同的文件类型).我觉得将每个属性绑定到ViewModel中的单个属性是过度的,我更喜欢将它们全部绑定到一个集合,并使用绑定语法将每个复选框绑定到集合中的特定项目.我试图坚持MVVM模式,所以我不只是想变得懒惰并处理Checked事件或类似的东西.
有没有办法使用WPF绑定语法表达集合中的路径或键?例如,如果我Dictionary<string, bool>在ViewModel中将一个名为FileTypes的公共属性公开,有没有办法将其中一个复选框绑定到FileTypes ["aspx"]?如果我有更复杂的数据结构Dictionary<string, Dictionary<string, int>>怎么办?
您几乎已经完成了 - 只需删除索引器参数周围的引号即可:
{Binding FileTypes[aspx]}
Run Code Online (Sandbox Code Playgroud)
更复杂的数据结构只需要一系列索引器,例如
{Binding Foo[aspx][Bar]}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,MSDN 中有一个很好的资源,位于 WPF > 数据 > 数据绑定 > 绑定声明概述下 - 向下滚动到“绑定路径语法”,获取可在绑定路径中使用的符号和约定的摘要。