【发布时间】:2010-06-03 14:40:39
【问题描述】:
我需要一个包含多个选项的 ListBox。我需要复选框(样式),而不是单选按钮。有什么办法我现在只能允许 1 个选中的复选框?我正在使用 MVVM,所以我不能手动检查或取消选中它们,这违反了规则。 如果我不能实现这样的功能 - 是否有简单的方法可以将单选按钮设置为看起来像复选框?
【问题讨论】:
标签: silverlight listbox checkbox coding-style
我需要一个包含多个选项的 ListBox。我需要复选框(样式),而不是单选按钮。有什么办法我现在只能允许 1 个选中的复选框?我正在使用 MVVM,所以我不能手动检查或取消选中它们,这违反了规则。 如果我不能实现这样的功能 - 是否有简单的方法可以将单选按钮设置为看起来像复选框?
【问题讨论】:
标签: silverlight listbox checkbox coding-style
除了有缺陷的要求*之外,唯一的方法是取消选中所有复选框,然后选中特定的索引复选框。
或者(因为它做同样的事情,但听起来更长),遍历所有指示的复选框,并找到任何一个设置为 true 而不是您想要检查的复选框,然后将其设置为 false。
HTTH。 YMMV。
【讨论】:
foreach (CheckBox cbx in CheckBoxList) { cbx.Checked = false; } 或者你不知道如何选择所有相关的复选框或者......我认为取消选中所有复选框的建议很简单,但我已经做了很长时间了,所以也许建议并不简单。你告诉我你不明白的地方。首先,您是如何生成复选框的?更新您的问题。
如果您正在使用 MVVM 并且要遵守“规则”,那么您的 ViewModel 应该具有复选框绑定到的属性。它是 ViewModel 中的代码,以确保此属性的状态正确。
因此,ViewModel 中一个属性设置为true 的代码可能需要在一个集合中搜索,以查找其匹配属性需要强制为false 的类似项目。然后 View 简单地反映 ViewModel 的当前状态。
【讨论】:
嗯,最后我用了这个solution
【讨论】: