使用 MVVM Light 附带的 EventToCommand 行为,我将 ListBox 的 SelectedItem 绑定到 ViewModel 上的 RelayCommand
在我的 Windows Phone 7 应用程序中一切正常,除了在使用 ListBox 离开视图后返回 SelectedItem 与以前相同。不是我想要的。
我在离开时尝试重置选定的索引,但这会导致命令再次触发。
有没有其他人解决了这个问题以及如何解决?
TIA
帕特里克·朗
使用 MVVM Light 附带的 EventToCommand 行为,我将 ListBox 的 SelectedItem 绑定到 ViewModel 上的 RelayCommand
在我的 Windows Phone 7 应用程序中一切正常,除了在使用 ListBox 离开视图后返回 SelectedItem 与以前相同。不是我想要的。
我在离开时尝试重置选定的索引,但这会导致命令再次触发。
有没有其他人解决了这个问题以及如何解决?
TIA
帕特里克·朗
我在每个处理程序开始时通过一个简单的检查来处理这个问题。假设您只支持单项选择,您可以检查是否有添加的项目。
if (e.AddedItems.Count == 1)
{
// Your code here
}
e
(的实例在哪里SelectionChangedEventArgs
。)
如果选择已被删除,则AddedItems
列表将为空,但RemovedItems
将填充列表。
我不再使用 SelectionChanged 事件。现在我用 TapGestures 来完成这一切。这样做的缺点是 TapGesture 不适用于 EventToCommand 行为,因此我在 View 中捕获 Gesture 事件并触发绑定到 Sender 的 DataContext 的 Command。
恕我直言,这比使用 SelctionChanged 和使用 SelectedIndexes 更简洁。
由于您使用的是 mvvm light,您不能为特定视图模型调用 ViewModelLocator 中的 clear 方法吗?