2012-02-02 79 views
0

我在使用MVVM Light的WP7中使用列表框时遇到了一个问题。基本上,在我使用MVVM之前,我必须做的是在页面导航到时,将OnInavigatedTo事件中的SelectedIndex设置为-1。然后在SelectionChanged事件中,我会检查SelectedIndex是否等于-1,如果是的话,我会忽略它。我这样做的原因是为了防止用户在返回页面时想再次选择相同的项目。如何在mvvmlight中取消选择lisboxitem?

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

回答

1

尝试创建您的视图模型一个SelectedItem属性,然后做SelectedItem视图模型属性和SelectedItem财产上的ListBox之间的双向的。然后,您可以在您的Command触发时更新所需的任何值,并将结果传播回ListBox

+0

即使选择了相同的项目,命令是否会启动? – loyalpenguin 2012-02-02 02:13:59

+0

优秀的问题 - 不确定。如果是这样,你应该能够在检查'SelectedItem'的值后提前退出。 – 2012-02-02 02:16:13

+0

我想知道如果将SelectedItem属性设置为null,当它们导航时将解决问题。一秒。 – loyalpenguin 2012-02-02 02:20:47

2

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

+1

所以你可以在ItemTemplate里设置tap事件。我猜我只是将该项目作为命令参数传递呢? – loyalpenguin 2012-02-02 13:17:48

+0

@loyalpenguin是的 – 2012-02-02 19:47:00