2016-09-15 3 views
0

모서리 반경을 변경하려면 MenuItem의 테두리에 어떻게 액세스합니까? MenuItem 테두리의 모퉁이 반경을 프로그래밍 방식으로 설정하는 방법

가 작동하지 않습니다 :

<Grid><StackPanel Orientation="Horizontal" HorizontalAlignment="Left" x:Name="spSub" VerticalAlignment="Top" > 
      </StackPanel></Grid 

업데이트 < < < 나는이를 추가하는 시도 : 여기

Style menuitemStyle = new Style(typeof(MenuItem)); 
menuitemStyle.Setters.Add(new Setter { Property = Border.CornerRadiusProperty, Value = 2 }); 
m.Style = menuitemStyle; 

는 XAML입니다 (그것에 아무것도 없다) xaml하지만 MenuItem 테두리는 여전히 정사각형입니다 :

<UserControl.Resources> 
    <ControlTemplate x:Key="subMenuItem" TargetType="MenuItem"> 
     <Border CornerRadius="5"></Border> 
    </ControlTemplate> 
</UserControl.Resources> 
+0

코드로 수행해야합니까? XAML을 사용하여 응용 프로그램 리소스에서이 스타일을 선언하면 모든 메뉴 항목에서 자동으로 사용됩니다. – ibebbs

+0

프로그래밍 방식으로 메뉴를 빌드하고 스택 패널에 추가합니다. 이렇게하는 이유는 프로그래밍 방식으로 방향을 가로에서 세로로 변경할 수 있기 때문입니다. – Radiohead

+0

메뉴 항목에 대한 CornerRadius 속성은 없습니다. XAML을 공유 할 수 있습니까? – Versatile

답변

1

나는 XAML에서 스타일을 사용하여 컨트롤 템플릿을 덮어 쓸 것입니다.

<Style TargetType="{x:Type MenuItem}"> 
          <Setter Property="OverridesDefaultStyle" Value="True"/> 
          <Setter Property="SnapsToDevicePixels" Value="True"/> 
          <Setter Property="Template"> 
           <Setter.Value> 
            <ControlTemplate TargetType="{x:Type MenuItem}"> 
             <Border BorderBrush="Red" BorderThickness="10" CornerRadius="10"> 
              <TextBlock Text="Content" ></TextBlock> 
             </Border> 
            </ControlTemplate> 
           </Setter.Value> 
          </Setter> 
</Style> 

TextBlock을 원하는 디스플레이 컨트롤로 수정하거나 적절하게 데이터를 바인딩 할 수 있어야합니다. BorderThickness를 과장하여 변경 사항이 어떻게 나타나는지 보여주었습니다.

+0

이것은 승자와 같습니다! 감사! – Radiohead

관련 문제