【问题标题】:WPF Global style can't be overridden无法覆盖 WPF 全局样式
【发布时间】:2012-01-18 14:19:39
【问题描述】:

此全局样式在 App.xaml 中声明:

<Style TargetType="TextBlock">
     <Setter Property="FontFamily" Value="Times New Roman"/>
     <Setter Property="FontSize" Value="20"/>
</Style>   

在一个窗口中,我尝试像这样在本地覆盖它:

<Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
     <Setter Property="FontSize" Value="60" />
</Style>

还有这个:

<Style TargetType="TextBlock">
     <Setter Property="FontSize" Value="60" />
</Style>

但没有任何效果。我仍然坚持在 App.xaml 中设置的样式。有谁知道什么会干扰这个?如果我从 App.xaml 中删除该全局变量,我可以在本地设置我想要的任何内容。如果我更改全局值,它会在全局范围内反映出来,所以我认为在任何地方都不会有另一个全局值与之冲突。我搜索了TargetType="TextBlock",但一无所获。

有什么想法吗?

【问题讨论】:

    标签: wpf coding-style textblock


    【解决方案1】:

    尝试了您的代码,它对我来说非常完美。您的窗口样式放置在哪里? 我将它复制到 Window.Resources 中,它显示字体大小为 60 的字体。 如果这不起作用,请在新的空项目中尝试您的代码。

      <Window.Resources>
        <Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
          <Setter Property="FontSize" Value="60" />
        </Style>
      </Window.Resources>
    

    【讨论】:

    • 我有全局应用 xaml 广告,我创建了一个全新的窗口来在同一个项目中进行测试。我将样式放在窗口资源级别、网格级别和列表视图级别。
    • 创建了一个新的解决方案,它按预期工作。我只是不知道我错过了什么阻止我做同样的事情。您是否知道使这些无法覆盖的任何项目设置或解决方案设置?在我开始之前,这一直是一个问题,我想提出一个解决方案,而不是在所有 50 个屏幕上制作本地样式。
    • 不,我不知道。但是这里有一个类似的问题:stackoverflow.com/questions/2524864/…也许你可以在那里找到线索..我会尝试使用合并的字典,看看这种行为是否仍然存在
    • 我已经看到并尝试了该解决方案。这是不行的。不过还是谢谢。
    • 这并没有解决我的问题,但我认为我的问题不是我的代码 - 只是要弄清楚什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2019-02-20
    • 1970-01-01
    • 2011-02-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多