dov*_*vid 18 wpf events xaml autocomplete visual-studio-2015
Visual Studio(2015)XAML编辑器在自动完成的ComboBox成员列表中提供了一个名为的事件Selected.这个自动完成错误的解释是什么?

Selected它的NOT WPF ComboBox事件(事件列表),但它的事件ComboBoxItem(继承自ListBoxItem.Selected).
为什么?
作为@glenThomas'answer(感谢),选择其附属活动Selector,以便轻松收听所有儿童选择的活动.
但是,它不起作用...如果我把一个处理程序Selected和我构建项目我收到一个错误:
'ComboBox'不包含'Selected'的定义,也没有扩展方法'Selected'接受'ComboBox'类型的第一个参数
System.Windows.Controls.ComboBox继承自System.Windows.Controls.Primitives.Selector,有Selected附加事件.
附加事件允许您将特定事件的处理程序附加到某个子元素而不是实际定义事件的父元素,即使可能引发事件的对象和目标处理实例都没有定义或以其他方式"拥有"该事件在他们的命名空间
System.Windows.Controls.Primitives.Selector有一个SelectedEvent字段,用于支持Selected附加的事件.
Selected事件的原因是,您可以向控件添加一个事件处理程序,该控件将在许多子控件中的任何一个引发事件时执行.它比将事件处理程序附加到每个事件更方便ComboBoxItem.
至于为什么它被包含在XAML代码编辑器的intellisense中; 我相信这是一个错误.该Selector班确实有所选事件公共字段:
public static readonly RoutedEvent SelectedEvent = EventManager.RegisterRoutedEvent(
"Selected", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Selector));
Run Code Online (Sandbox Code Playgroud)
但是您无法为事件添加处理程序,因为Selector类没有像这样定义事件:
public event RoutedEventHandler Selected
{
add
{
AddHandler(SelectedEvent, value);
}
remove
{
RemoveHandler(SelectedEvent, value);
}
}
Run Code Online (Sandbox Code Playgroud)
因此将它包含在intellisense中是没有意义的ComboBox.
但是,ListBoxItem哪个基类ComboBoxItem确实为您定义了附加处理程序的事件,因此您可以将处理程序附加到ComboBoxItems