为什么我的事件处理程序被认为没有引用?

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 的原因。