2014-10-29 4 views
0

템플릿 파일에 contextmenuitem 및 핸들러와 함께 contextmenu를 추가하려고합니다. 그것은 내가지고있어 오류가 오류 1 그래서템플릿 파일의 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> 

처럼 보이는, 이전 것들이 잘하지만 VS 날 템플릿 파일의 메뉴 항목에 이벤트 핸들러를 추가 할 수 없습니다 'ResourceDictionary에'루트 요소가 필요 ax : XAML 파일의 이벤트 처리기를 지원하는 클래스 특성입니다. Click 이벤트에 대한 이벤트 처리기를 제거하거나 x : Class 특성을 루트 요소에 추가하십시오. Line 37 Position 61.

이 방법을 사용할 수 있습니까?

답변

1

이벤트 처리기는 코드 숨김 코드로 구현해야하지만, * .cs 파일이없는 xaml 파일 만 있기 때문에 VS는 이벤트 처리기를 구현해야하는 위치를 알 수 없습니다.

이 문제를 해결하려면 xaml 파일에 대한 코드 숨김 파일을 추가해야합니다. 해당 코드 숨김 파일에서 resourcedictionary (ControlTemplate이 저장된 위치)의 클래스를 정의한 다음 xaml 파일에서 "x : class"특성을 정의 할 수 있습니다. 그 후에는 이벤트 처리기를 정의 할 수 있어야합니다.

자세한 내용은 here을 참조하십시오.