Listbox.SelectedItems.Add不会导致SelectionChanged事件

时间:2012-06-26 14:09:42

标签: xaml listbox

我有一个扩展Listbox类的自定义用户控件。在其内部,我将覆盖OnSelectionChanged以添加/删除任何选定/未选定项目的装饰。当我使用鼠标选择项目时,这一切都有效,但是当我使用

以编程方式将项目添加到列表框时
myListBox.SelectedItems.Add(newItem) // newItem is already a member of myListBox.Items

它不执行OnSelectionChanged代码。

更新:除非我疯了(这总是可能的),否则从父对象调用此行为似乎存在差异

myListBox.SelectedItems.Add(newItem)

此扩展列表框类中的此方法

Public Sub AddSelectedItem(newItem as Object)
    Me.SelectedItems.Add(newItem)
End Sub

由于某种原因,第二个选项是触发事件而第一个选项不是。

2 个答案:

答案 0 :(得分:0)

您需要先添加此行代码

myListBox.Items.Add(newItem)

答案 1 :(得分:0)

这里的解决方案是从ListBox的扩展名

中调用SelectedItems.Add()
public class MyListBox : ListBox
{
public void AddSelectedItems(object newSelectedItem)
{
  // works
  this.SelectedItems.Add(newSelectedItem);
}
}

将触发OnSelectionChanged事件。

从窗口调用它不会触发事件

private sub SomeWindowMethod()
{
   // does not work
   this.MyListBoxInstance.SelectedItems.Add(newSelectedItem);
}