为什么我的事件处理程序被认为没有引用?
Why Is My Event Handler Considered as Having No References?
我为 ComboBox 的 dropDownClosed 事件编写了一个事件处理程序:
...但它显示“0 个引用”:
为什么会这样?按钮单击事件确实显示 1 个参考...
很可能是因为出于某种原因没有为其生成支持字段。这(生成的 *.g.cs
文件中的支持字段)是事件处理程序引用的来源。
要么您没有在 XAML 标记中为 ComboBox
元素分配 x:Name
,要么该元素是模板的一部分而不是部分页面的一部分 class本身。
以下面的 ItemsControl
为例:
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox x:Name="cmb" DropDownClosed="cmb_DropDownClosed" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
由于 ComboBox
属于 DataTemplate
,因此在定义 ItemsControl
的页面的代码隐藏中不会为其生成任何支持字段。这也是为什么您不能在代码隐藏中使用其名称(“cmb”)直接访问 ComboBox
的原因。
我为 ComboBox 的 dropDownClosed 事件编写了一个事件处理程序:
...但它显示“0 个引用”:
为什么会这样?按钮单击事件确实显示 1 个参考...
很可能是因为出于某种原因没有为其生成支持字段。这(生成的 *.g.cs
文件中的支持字段)是事件处理程序引用的来源。
要么您没有在 XAML 标记中为 ComboBox
元素分配 x:Name
,要么该元素是模板的一部分而不是部分页面的一部分 class本身。
以下面的 ItemsControl
为例:
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox x:Name="cmb" DropDownClosed="cmb_DropDownClosed" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
由于 ComboBox
属于 DataTemplate
,因此在定义 ItemsControl
的页面的代码隐藏中不会为其生成任何支持字段。这也是为什么您不能在代码隐藏中使用其名称(“cmb”)直接访问 ComboBox
的原因。