我有一个关于 Mvvmlight 绑定 Listbox SelectedIndex 的问题。完整的源代码可以在这里下载。这是我的先决条件:
[测试模型]
string Title;
string Description;
[测试视图模型]
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,然后尝试点击 Listbox 的任何项目,我可以看到该项目没有聚焦颜色(因为我将 SelectedIndex 重置为-1)。
问题来了,当我回到MainPage,然后再次点击按钮到TestPage,你会看到点击 Listbox 的任何项目都会导致每个项目的焦点颜色,这很奇怪。
希望任何人都可以帮助我看看我的样品是否有任何问题。谢谢。