0

我有一个关于 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的示例。

  1. MainPage:这个页面有一个按钮,点击按钮会导航到TestPage
  2. TestPage:此页面有一个列表框并绑定到 ViewModel

当我运行这个示例时,点击按钮到TestPage,然后尝试点击 Listbox 的任何项目,我可以看到该项目没有聚焦颜色(因为我将 SelectedIndex 重置为-1)。

问题来了,当我回到MainPage,然后再次点击按钮到TestPage,你会看到点击 Listbox 的任何项目都会导致每个项目的焦点颜色,这很奇怪。

希望任何人都可以帮助我看看我的样品是否有任何问题。谢谢。

4

1 回答 1

1

我从下面的人那里得到了解决方法:

改变:

<i:EventTrigger EventName="SelectionChanged">

至:

<i:EventTrigger EventName="Tap">

它真的像我预期的那样工作。 点击可以允许用户点击重复的 ListItem,“reset SelectedIndex = -1”可以使选定的项目没有突出显示颜色

于 2012-05-17T13:26:45.120 回答