【问题标题】:Listbox with checkboxes and single check in SilverlightSilverlight 中带有复选框和单次检查的列表框
【发布时间】:2010-06-03 14:40:39
【问题描述】:

我需要一个包含多个选项的 ListBox。我需要复选框(样式),而不是单选按钮。有什么办法我现在只能允许 1 个选中的复选框?我正在使用 MVVM,所以我不能手动检查或取消选中它们,这违反了规则。 如果我不能实现这样的功能 - 是否有简单的方法可以将单选按钮设置为看起来像复选框?

【问题讨论】:

    标签: silverlight listbox checkbox coding-style


    【解决方案1】:

    除了有缺陷的要求*之外,唯一的方法是取消选中所有复选框,然后选中特定的索引复选框。

    或者(因为它做同样的事情,但听起来更长),遍历所有指示的复选框,并找到任何一个设置为 true 而不是您想要检查的复选框,然后将其设置为 false。

    • 有缺陷的要求:一系列复选框向任何用户表明他们可以选择零个或多个项目。一系列单选按钮表示它们只能选择一个。这是自 Windows 3 之前就已深入用户的东西,所有非 IT 人员都不会质疑。你会打破他们的心理模式,这比看起来漂亮更糟糕。请让管理层修改此要求。

    HTTH。 YMMV。

    【讨论】:

    • 好吧,这不是我的要求。所以这是无可争辩的,不幸的是。如何一次取消选中所有复选框?
    • @walkor ~ 我想我不明白这个问题。什么是你不知道该怎么做? foreach (CheckBox cbx in CheckBoxList) { cbx.Checked = false; } 或者你不知道如何选择所有相关的复选框或者......我认为取消选中所有复选框的建议很简单,但我已经做了很长时间了,所以也许建议并不简单。你告诉我你不明白的地方。首先,您是如何生成复选框的?更新您的问题。
    • 我的问题很清楚,我在 xaml.cs 文件中没有代码。我不能在 MVVM 中调用这个 - foreach(CheckBoxList 中的 CheckBox cbx)。
    • @Walkor ~ 你能在客户端做吗?使用 jQuery 或类似库并获取该特定 div 或 tr 或其他任何内容中的所有复选框。同样的逻辑适用。 ||在某些时候,您拥有所有复选框和用户响应的模型。那是您进行检查/取消检查的时候。绑定将带回查看 regen。
    【解决方案2】:

    如果您正在使用 MVVM 并且要遵守“规则”,那么您的 ViewModel 应该具有复选框绑定到的属性。它是 ViewModel 中的代码,以确保此属性的状态正确。

    因此,ViewModel 中一个属性设置为true 的代码可能需要在一个集合中搜索,以查找其匹配属性需要强制为false 的类似项目。然后 View 简单地反映 ViewModel 的当前状态。

    【讨论】:

    • 嗯,是的,我想过这个想法,但我也希望有更好的方法。只是为了确保 - 您建议遍历项目集合,用选中/未选中状态标记项目并让绑定反映这些更改,对吗?
    【解决方案3】:

    嗯,最后我用了这个solution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-11
      • 2017-10-10
      • 1970-01-01
      • 2023-04-02
      • 2014-08-12
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      相关资源
      最近更新 更多