2012-02-02 73 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