我可以覆盖/替换默认样式中子项的属性吗?



默认的 wpf 菜单项(在菜单上)是由控件构造的,大约如下所示:
网 格;外矩形;BG矩形;内矩形;码头面板;弹出。

坞站面板依次包括:
内容演示者[图标];路径;内容演示者[文本]

内容演示器[文本]由一个TextBlock控件组成。

我想要实现的是定义一个尽可能简单的Style来更改此TextBlockVerticalAlignment属性,但仅适用于MenuItem中的TextBlock,而不是一般。

<Style x:Key ="TextBlockCenterStyle" TargetType="{x:Type TextBlock}">
        <Setter Property="VerticalAlignment" Value="Center" />
    </Style>
<Style TargetType="MenuItem">
        <Setter Property="FontSize" Value="11" />
        <Setter Property="ItemContainerStyle" Value="TextBlockCenterStyle" />
        <Style.Resources>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="VerticalAlignment" Value="Center" />
            </Style>
      </Style.Resources>
</Style>

我尝试了Style.ResourcesItemContainerStyle.
无法让它工作。 ItemContainerStyle在运行时抛出TargetInvocationException(从NullReferenceException)。
如果可能的话,它应该是一个通用的解决方案,比如FindChildControl?!

你试过 ItemContainerStyle 吗?

像这样:

 <MenuItem ItemContainerStyle = {StaticResource MyItemContainerStyle}../>

然后 MyItemContainerStyle 有你的

 <Style x:Key ="MyItemContainerStyle" TargetType="{x:Type TextBlock}">
                <Setter Property="VerticalAlignment" Value="Center" />
            </Style>
================= 编辑

后回答 =======================试试这个:

<Style TargetType="MenuItem">
        <Setter Property="FontSize" Value="11" />
        <Setter Property="ItemContainerStyle" Value="{StaticResource TextBlockCenterStyle}" />
        <Style.Resources>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="VerticalAlignment" Value="Center" />
            </Style>
      </Style.Resources>
</Style>

相关内容

  • 没有找到相关文章

最新更新