【问题标题】:Resetting SelectedItem on a Listbox bound to a RelayCommand on a ViewModel在绑定到 ViewModel 上的 RelayCommand 的列表框中重置 SelectedItem
【发布时间】:2011-06-09 22:33:06
【问题描述】:

使用 MVVM Light 附带的 EventToCommand 行为,我将 ListBox 的 SelectedItem 绑定到 ViewModel 上的 RelayCommand

在我的 Windows Phone 7 应用程序中一切正常,除了在使用 ListBox 离开视图后返回 SelectedItem 与以前相同。不是我想要的。

我尝试在离开时重置选定的索引,但这会导致命令再次触发。

还有其他人解决了这个问题吗?如何解决的?

TIA

帕特里克·朗

【问题讨论】:

    标签: silverlight windows-phone-7 mvvm-light relaycommand


    【解决方案1】:

    我通过在每个处理程序开始时进行简单检查来处理这个问题。假设您只支持单选项目,您可以检查是否有添加项目。

    if (e.AddedItems.Count == 1)
    {
        // Your code here
    }
    

    (其中eSelectionChangedEventArgs 的一个实例。)

    如果选择已被删除,AddedItems 列表将为空,但 RemovedItems 列表将被填充。

    【讨论】:

      【解决方案2】:

      由于您使用的是 mvvm light,您不能为特定视图模型调用 ViewModelLocator 中的 clear 方法吗?

      【讨论】:

        【解决方案3】:

        我不再使用 SelectionChanged 事件。现在我用 TapGestures 来完成这一切。这样做的缺点是 TapGesture 不适用于 EventToCommand 行为,因此我在 View 中捕获 Gesture 事件并触发绑定到 Sender 的 DataContext 的 Command。

        恕我直言,这比使用 SelctionChanged 和使用 SelectedIndexes 更简洁。

        【讨论】:

          猜你喜欢
          • 2015-07-23
          • 2012-05-24
          • 2021-10-25
          • 2011-01-27
          • 2012-04-18
          • 1970-01-01
          • 1970-01-01
          • 2017-02-02
          • 1970-01-01
          相关资源
          最近更新 更多