【问题标题】:How to deselect lisboxitem in mvvmlight?如何在 mvvmlight 中取消选择 lisboxitem?
【发布时间】:2026-02-15 06:00:02
【问题描述】:

我有一个关于在 WP7 中使用 MVVM Light 处理列表框的问题。基本上在我使用 MVVM 之前,我所要做的就是在页面导航到时在 OnNavigatedTo 事件内将 SelectedIndex 设置为 -1。然后在 SelectionChanged 事件中,我会检查 SelectedIndex 是否等于 -1,如果是,我会忽略它。我这样做的原因是为了以防用户在返回页面时想再次选择相同的项目。

现在使用 MVVM (MVVM Light),我将事件绑定到一个命令,该命令负责第一部分。但是现在我被卡住了,因为我不知道如何将 ViewModel 中的 SelectedIndex 设置为 -1,这会阻止用户再次选择相同的项目。有什么想法吗?

【问题讨论】:

    标签: windows-phone-7 listbox mvvm-light


    【解决方案1】:

    更好的解决方案是不使用选择事件来触发导航。请改用单个项目的点击事件。
    这也避免了滚动时意外导航的问题。

    【讨论】:

    • 所以你可以在 ItemTemplate 中设置点击事件。我猜我只是将项目作为命令参数传递?
    【解决方案2】:

    尝试在您的视图模型上创建SelectedItem 属性,然后在SelectedItem 视图模型属性和ListBox 上的SelectedItem 属性之间进行双向操作。然后,您可以在 Command 触发时使用您想要的任何值对其进行更新,结果将传播回您的 ListBox

    【讨论】:

    • 很好的问题——不确定。如果是这样,您应该可以在检查SelectedItem 的值后提前退出。
    • 我想知道当他们导航时将您谈论的 SelectedItem 属性设置为 null 是否可以解决问题。一秒钟。