2012-02-02 12 views
0

私は、MVVM Lightを使ってWP7のリストボックスを使って作業することについて簡単に質問しました。基本的にMVVMを使用する前に、ページを移動したときにOnNavigatedToイベントの中でSelectedIndexを-1に設定しなければなりませんでした。 SelectionChangedイベントの中で、SelectedIndexが-1に等しいかどうかをチェックし、そうであれば無視します。私がこれをした理由は、ユーザーがページに戻ったときに再び同じアイテムを選択したかったからです。mvvmlightでlisboxitemの選択を解除するにはどうすればいいですか?

MVVM(MVVM Light)ではイベントを最初の部分を処理するコマンドにバインドします。しかし、今私は、ViewModelからSelectedIndexを-1に設定して、同じ項目を再度選択できないようにする方法がわからないために立ち往生しています。何か案は?

答えて

1

はあなたListBoxSelectedItemのviewmodelプロパティとSelectedItemプロパティ間の双方向の操作を行い、その後、あなたのviewmodelにSelectedItemプロパティを作成してみてください。 Commandが鳴って、結果があなたのListBoxに伝播するときに、あなたが望むどんな値でもそれを更新することができます。

+0

同じ項目が選択されていてもコマンドが起動しますか? – loyalpenguin

+0

優れた質問 - わからないもしそうなら、あなたは 'SelectedItem'の値をチェックした後で早く終了することができます。 –

+0

私は彼らが問題を解決するときに移動するときにnullを話してSelectedItemプロパティを設定するのだろうかと思います。一秒。 – loyalpenguin

2

さらに優れたソリューションは、ナビゲーションをトリガするために選択イベントを使用しないことです。代わりに個別項目のタップイベントを使用してください。
これにより、スクロールするときの偶発的なナビゲーションの問題も回避されます。

+1

ItemTemplateの内部でタップイベントを設定します。私はちょうどコマンドパラメータとして項目を渡すだろうと思っていますか? – loyalpenguin

+0

@loyalpenguin yep –

関連する問題