2013-07-04 44 views
0

我有一个要求在哪里创建可自动应用的contextmenu风格,我已经尝试了我在网上找到的每个例子,但没有任何工作。我已经尝试过在MSDN链接中叙述的样式:http://msdn.microsoft.com/en-us/library/ms744758(v=vs.85).aspx如何为默认的wpf contextmenu创建样式?

我已经使用了下面的样式,但它不工作。

<Style x:Key="CStyle" TargetType="ContextMenu"> 
     <Setter Property="SnapsToDevicePixels" 
       Value="True" /> 
     <Setter Property="OverridesDefaultStyle" 
       Value="True" /> 
     <Setter Property="Grid.IsSharedSizeScope" 
       Value="true" /> 
     <Setter Property="HasDropShadow" 
       Value="True" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ContextMenu"> 
        <Border Name="Border" 
          Background="Red" 
          BorderBrush="{StaticResource SolidBorderBrush}" 
          BorderThickness="1"> 
         <StackPanel IsItemsHost="True" 
            KeyboardNavigation.DirectionalNavigation="Cycle" /> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="HasDropShadow" 
           Value="true"> 
          <Setter TargetName="Border" 
            Property="Padding" 
            Value="0,3,0,3" /> 
          <Setter TargetName="Border" 
            Property="CornerRadius" 
            Value="4" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

任何人都可以指导我做到这一点?

我曾尝试这种风格应用到TextBoxStyle(见下面的示例),当我运行它,并在文本框的内容,我看到下面的错误右键点击:

“‘System.Windows.Style’是不是属性'ContextMenu'的有效值。“ 我在下面的风格在哪里做错了?请指导我。

样品文本样式:

<Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseTextStyle}"> 
    <Setter Property="SnapsToDevicePixels" Value="True"/> 
    <Setter Property="ContextMenu" Value="{StaticResource CStyle}" /> 
    <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
+0

这种风格适合我。你在哪里定义了它? –

+0

在资源部分的App.xaml中对其进行了定义。我想我会工作 – loop

+0

我将它添加到TextBoxStyles.xaml它是一个资源字典。但它不起作用 – user2408987

回答

1

编辑:根据调整后的问题

您正在尝试的ContextMenu值设置为一个Style。改变你的风格如下:

<Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseTextStyle}"> 
     <Setter Property="SnapsToDevicePixels" Value="True"/> 
     <Setter Property="ContextMenu"> 
      <Setter.Value> 
       <ContextMenu Style="{StaticResource CStyle}"> 
        <MenuItem Header="Cut" Command="Cut"/> 
        <MenuItem Header="Copy" Command="Copy"/> 
        <MenuItem Header="Paste" Command="Paste"/> 
       </ContextMenu> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/> 
    </Style> 
+0

我有一个名为Theme.xaml的资源字典,其中我合并了所有资源(包括TextBoxStyle.xaml)字典,Theme.xaml在App.xaml中合并。 – user2408987

+0

我已经更改了问题内容,​​请检查一次,谢谢。 – user2408987

+0

我已根据您的更改修改了答案。 –