重置绑定到ViewModel上的RelayCommand的列表框上的SelectedItem

时间:2011-06-09 22:33:07

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

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

所有功能在我的Windows Phone 7应用程序中运行良好,只是在使用ListBox导航离开View之后,返回SelectedItem与之前相同。不是我想要的。

我尝试在导航时重置所选索引,但这会导致命令再次触发。

还有其他人解决过这个问题吗?

TIA

Patrick Long

3 个答案:

答案 0 :(得分:1)

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

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

(其中eSelectionChangedEventArgs的实例。)

如果删除了选择,则AddedItems列表将为空,但会填充RemovedItems列表。

答案 1 :(得分:0)

既然你正在使用mvvm light,你不能在ViewModelLocator中调用特定视图模型的clear方法吗?

答案 2 :(得分:0)

我转而使用SelectionChanged事件。现在我用TapGestures做到这一切。这样做的缺点是TapGesture不能与EventToCommand行为一起使用,所以我在View中捕获Gesture事件并触发绑定到Sender的DataContext的Command。

恕我直言,这比使用SelctionChanged和使用SelectedIndexes更糟糕。