2013-07-04 20 views
0

자동으로 적용 할 수있는 contextmenu에 대한 스타일을 만들려면 어디서든 웹에서 찾은 모든 예제를 시도했지만 아무 것도 작동하지 않습니다. 나는 MSDN 링크에 서술 된 스타일을 시도했다 : http://msdn.microsoft.com/en-us/library/ms744758(v=vs.85).aspx기본 wpf 컨텍스트 메뉴의 스타일을 만드는 방법은 무엇입니까?

나는 아래의 스타일을 사용했지만 작동하지 않는다.

<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> 

어느 하나가이 목표를 달성 할 수 있습니까?

I (아래 샘플 참조) 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에서 resources 섹션에 정의했습니다. 나는 내가 일할 것이라고 생각한다. – loop

+0

TextBoxStyles.xaml에 그것을 리소스 사전으로 추가했다. 그러나 작동하지 않습니다. – user2408987

답변

1

편집 : 당신은 StyleContextMenu의 값을 설정하려고

수정 질문

기준으로합니다. 스타일을 다음과 같이 변경하십시오.

<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

변경 사항을 기반으로 답변을 수정했습니다. –