MvvmlightバインディングリストボックスSelectedIndexについて質問があります。完全なソースコードはここからダウンロードできます。これが私の前提条件です:
[TestModel]
string Title;
string Description;
[TestViewModel]
ObservableCollection<TestModel> TestList;
[xamlバインディング]
<ListBox ItemSource="{Binding TestList}"
SelectedIndex="{Binding SelectedIndex Mode=TwoWay}">
.....
<i:EventTrigger EventName="SelectionChanged">
.....
</i:EventTrigger>.....
これが私のOnSelectionChangedコードです:
private void OnSelectionChanged(TestModel test)
{
int index = SelectedIndex;
Debug.WriteLine("[SelectionChanged] +++, index={0}", index);
// If selected index is -1 (no selection) do nothing
if (-1 == SelectedIndex)
return;
Debug.WriteLine("[SelectionChanged] selected item={0}", test.Title);
// Reset selected index to -1 (no selection)
SelectedIndex = -1;
Debug.WriteLine("[SelectionChanged] ---, index={0}", index);
}
MainPage.xamlとTestPage.xamlのサンプルがあります。
- MainPage:このページにはボタンがあります。ボタンをクリックするとTestPageに移動します
- TestPage:このページにはリストボックスとViewModelへのバインドがあります
このサンプルを実行し、ボタンをタップしてTestPageに移動し、リストボックスの任意のアイテムをタップしようとすると、アイテムにフォーカスされた色がないことがわかります(SelectedIndexを-1にリセットしたため)。
ここに質問があります。MainPageに戻ってからもう一度TestPageのボタンをタップすると、リストボックスの任意のアイテムをタップすると、すべてのアイテムにフォーカスされた色が表示されます。これは奇妙なことです。
誰かが私のサンプルに問題があるかどうかを確認するのを手伝ってくれることを願っています。ありがとう。