2013-07-04 41 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

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