2014-10-29 65 views
0

我试图在模板文件中添加contextmenu以及contextmenuitem和处理程序。以前的事都很好,但VS不会让我一个事件处理程序添加到模板文件中的菜单项,它看起来像这样向模板文件中的ContextMenuItem添加事件处理程序

<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“资源字典”根元素需要ax:Class属性以支持XAML文件中的事件处理程序。除去Click事件的事件处理程序,或将x:Class属性添加到根元素。 Line 37 Position 61.

有什么办法可以使这项工作?

回答

1

问题是您的事件处理程序需要在代码后面的文件中实现,但由于您只有您的xaml文件没有任何背后的* .cs文件,VS不知道您的事件处理程序应该在哪里实现。

要解决此问题,您需要为您的xaml文件添加代码隐藏文件。在该文件后面的代码中,您必须定义resourcedictionary的类(ControlTemplate的存储位置),然后可以在xaml文件中定义“x:class”属性。之后,你应该能够定义你的事件处理程序。

查看更多的完整的描述here

相关问题