代码之家  ›  专栏  ›  技术社区  ›  Dean Kuga

选择项时更改列表框项源属性将导致IndexAutoFrange异常

  •  0
  • Dean Kuga  · 技术社区  · 15 年前

    如果我换了 ItemsSource ListBox 当一个项目被选中时,我得到indexAutofrange异常,因为 SelectedIndex 属性在选择项时设置。如果在 不引发异常,但即使我设置了 SelectedItem 在更改 如果选择了项,则仍会发生异常,因为 选定索引

    有没有解决这个问题的办法?

    编辑:这是示例代码,因为只有在应用 Contains 在“我的LINQ到对象”表达式中筛选,并在列表框中选择项。。。我的名单是 List<>

    lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1);
    

    那很好。这个修改后的LINQ查询也可以正常工作(如果没有选择任何项),但是如果选择了某个项,我将得到 IndexOutOfRangeException

    lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1 && i.DisplayName.Contains(someString));
    

    如果我将此LINQ查询重定向到一个var或一个CLR对象列表,则该查询工作正常,但当我尝试将其设置为列表框的ItemsSource时,会出现异常(即使我将此var或一个CLR对象ItemsSource列表设置为列表框)。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Thomas Levesque    15 年前

    刚刚准备好 SelectedIndex 到-1


    编辑:好的,请改为:

    listBox.ClearValue(Selector.SelectedIndexProperty);