我正在尝试在模板文件中添加contextmenu以及contextmenuitem和handler。以前的东西很好,但VS不会让我在模板文件中的menuitem中添加一个eventhandler,它看起来像是这样
<ControlTemplate TargetType="{x:Type local:CalendarDayView}">
<ControlTemplate.Resources>
<ContextMenu x:Key="dayEntryContextMenu">
<MenuItem Header="Remove entry" Click="removeEntryBtn"/>
</ContextMenu>
</ControlTemplate.Resources>
<Border BorderBrush="Gray" BorderThickness="1" Width="100" Height="100">
<Grid Name="contentGrid">
<ListBox Name="entriesListBox" Background="LightYellow" ContextMenu="{StaticResource dayEntryContextMenu}">
<ListBoxItem>Test entry #1</ListBoxItem>
<ListBoxItem>Test entry #2</ListBoxItem>
<ListBoxItem>Test entry #3</ListBoxItem>
</ListBox>
<!-- Date display below -->
<TextBlock Name="dateTextBlock" Text="31-Nov" FontFamily="Segoe UI Light" FontSize="18" VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
</Grid>
</Border>
</ControlTemplate>
我得到的错误是 错误1“ResourceDictionary”根元素需要x:Class属性来支持XAML文件中的事件处理程序。删除Click事件的事件处理程序,或将x:Class属性添加到根元素。第37行第61位。
有没有办法让这项工作?
答案 0 :(得分:1)
问题是您的事件处理程序需要在代码隐藏文件中实现,但由于您只有xaml文件后面没有任何* .cs文件,因此VS不知道应该在哪里实现事件处理程序。 / p>
要解决此问题,您需要为xaml文件添加代码隐藏文件。在该代码隐藏文件中,您必须定义resourcedictionary的类(存储ControlTemplate的位置),然后您可以定义&#34; x:class&#34;你的xaml文件中的属性。之后,您应该能够定义事件处理程序。
查看更完整的说明here。