如何以编程方式设置MenuItem边框的圆角半径

时间:2016-09-15 20:40:37

标签: c# wpf

如何访问MenuItem的边框以更改Corner Radius?

这不起作用:

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

这是xaml(没有任何内容):

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

更新&LT;&LT;&LT;       我尝试将其添加到xaml但是MenuItem边框仍然是正方形:

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

1 个答案:

答案 0 :(得分: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,以显示变化的样子。