2014-10-29 94 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

相關問題