2013-11-25 54 views
0

我正在努力解決以下問題。我的樣式文件在資源目錄中。但是它不能將點擊方法應用於上下文菜單項。它顯示在這個錯誤下面。請幫助我如何實現這一點。無法在資源目錄中創建menuitem點擊方法

錯誤:「'無法從文本'OnMenuItemClick'創建'點擊'。'行號「10」和行位置「35」。「

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:src="clr-namespace:System;assembly=mscorlib" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<ObjectDataProvider x:Key="date" ObjectType="{x:Type src:DateTime}"/> 
<Style x:Key="ContextMenuStyle1" TargetType="{x:Type ContextMenu}"> 
    <Setter Property="BorderThickness" Value="0"/> 
    <Setter Property="BorderBrush" Value="Transparent"/> 
</Style> 
<ContextMenu x:Key="ListViewContext" Style="{StaticResource ContextMenuStyle1}"> 
    <MenuItem Header="Create" Click="OnMenuItemClick" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}"></MenuItem> 
</ContextMenu> 
<ContextMenu x:Key="GridItemContext" Style="{StaticResource ContextMenuStyle1}"> 
    <MenuItem Header="Modify" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}"/> 
    <MenuItem Header="Delete" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}"/> 
</ContextMenu> 
<Style x:Key="ListViewGrid" TargetType="{x:Type ListView}"> 
    <Setter Property="BorderBrush" Value="#FFDFDFE2"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="Background" Value="#faf2f2"/> 
    <Setter Property="ContextMenu" Value="{StaticResource ListViewContext}"/> 
</Style> 
<Style TargetType="{x:Type ListViewItem}"> 
    <Setter Property="ContextMenu" Value="{StaticResource GridItemContext}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListViewItem"> 
       <Border CornerRadius="0" SnapsToDevicePixels="True" > 
        <Border Name="InnerBorder" CornerRadius="0" BorderThickness="0,0,0,1" BorderBrush="#FFDFDFE2"> 
         <Grid Background="#FFEFEFEF" Name="Trg" Height="20"> 
          <GridViewRowPresenter /> 
         </Grid> 
        </Border> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter TargetName="Trg" Property="Background" Value="#FFDFDFE2" /> 
        </Trigger> 
        <Trigger Property="IsSelected" Value="True"> 
         <Setter TargetName="Trg" Property="Background" Value="#FFDFDFE2" /> 
        </Trigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsSelected" Value="True" /> 
          <Condition Property="IsMouseOver" Value="True" /> 
         </MultiTrigger.Conditions> 
        </MultiTrigger> 
       </ControlTemplate.Triggers> 

      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

回答

1

當我試圖上面的代碼,我得到的錯誤是:

錯誤1「的ResourceDictionary」根元素需要X:Class屬性 支持的事件處理程序中XAML文件。刪除Click事件的事件 處理程序,或者向根 元素添加x:Class屬性。線10的位置35

這是我如何固定它:

1)增加了X:Class屬性到ResourceDictionary

x:Class="WpfApplication4.Dictionary1" 

2)增加了一個C#類文件的項目,代碼如下:

public partial class Dictionary1 : ResourceDictionary 
{ 
    public Dictionary1() 
    { 
     InitializeComponent(); 
    } 

    void OnMenuItemClick(object sender, RoutedEventArgs e) 
    { 

    } 
} 

然後,項目建好。