要出家的泡面 · 御宅兔痛车设计案例~日产370z死神-黑崎一 ...· 2 月前 · |
仗义的烈酒 · 使用保密字典拉取镜像来部署SAE_Serve ...· 6 月前 · |
安静的匕首 · 4.22【英语美文】20个伟大美国短篇小说《 ...· 10 月前 · |
稳重的凉茶 · 激情信箱电影-高清完整版在线观看(全集未删减 ...· 11 月前 · |
酒量小的小虾米 · 巧克力于犬是禁止事项漫画免费 - ...· 1 年前 · |
Visual Studio (2015) XAML编辑器在自动完成ComboBox成员列表中提供了一个名为
Selected
的事件。这个自动补全错误的原因是什么?
Selected
它不是WPF ComboBox事件(
event list
,而是
ComboBoxItem
的事件)(继承自
ListBoxItem.Selected
。
为什么会这样呢?
编辑
作为@glenThomas的回答(感谢),选择了来自
Selector
的附加事件,以便轻松收听所有子选择事件。
但是,
in work...
如果我在
Selected
中放了一个处理程序,然后我构建了一个项目,我会收到一个错误:
'ComboBox‘不包含'Selected’的定义,并且找不到接受类型为'ComboBox‘的第一个参数的扩展方法'Selected’
System.Windows.Controls.ComboBox
继承自具有
Selected
附加事件的
System.Windows.Controls.Primitives.Selector
。
附加事件允许您将特定事件的处理程序附加到某个子元素,而不是实际定义该事件的父元素,即使潜在引发该事件的对象和目标处理实例都没有在其命名空间中定义或以其他方式“拥有”该事件。
System.Windows.Controls.Primitives.Selector
有一个
SelectedEvent
字段,它支持
Selected
附加事件。
Selected
事件的原因是,您可以向控件添加一个事件处理程序,当许多子控件中的任何一个引发该事件时,都将执行该事件处理程序。这比将事件处理程序附加到每个
ComboBoxItem
要方便得多。
至于为什么它包含在XAML代码编辑器的intellisense中,我相信这是一个bug。
Selector
类有一个用于所选事件的公共字段:
public static readonly RoutedEvent SelectedEvent = EventManager.RegisterRoutedEvent(
"Selected", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Selector));
但是您不能为事件添加处理程序,因为
Selector
类不像下面这样定义事件:
public event RoutedEventHandler Selected
AddHandler(SelectedEvent, value);
remove
RemoveHandler(SelectedEvent, value);
}
因此,将其包含在
ComboBox
的智能感知中是没有意义的。
但是,
ComboBoxItem
的基类
ListBoxItem
为您定义了附加处理程序的事件,因此您可以将处理程序附加到ComboBoxItems
Selected
是在
Selector
类中定义的附加事件,并且假定
与选择器项
一起使用。通常你会这样写:
<ListBoxItem Selector.Selected="OnSelected" />
如下所示,ComboBox也可以是一个条目,这就是在智能感知中列出
Selected
事件的原因:
<ListBox x:Name="Selector">
<ComboBox x:Name="Item1" />
<ComboBox x:Name="Item2" />
</ListBox>
但是,combobox必须是另一个选择器的项,才能使用所选事件:
<ComboBox x:Name="Selector1" Selector.Selected="ThisDoesNotWork"/>
<ListBox x:Name="Selector2">
<ComboBox x:Name="Item1" Selector.Selected="ThisShouldWorkButDoesnt"/>
<!-- See edit -->
<ComboBox x:Name="Item2" />
稳重的凉茶 · 激情信箱电影-高清完整版在线观看(全集未删减) - 人人影视 11 月前 |