默认 TextBlock 样式覆盖按钮文本颜色

2023-11-21

我的问题出现在 .NET 3.5 SP1 中的 WPF 中,可以描述如下:

我有一个默认的Style击中所有TextBlock我的用户界面中的元素。看起来就是这样:

<Style TargetType="{x:Type TextBlock}">
   <Setter Property="TextTrimming" Value="CharacterEllipsis"/>
   <Setter Property="Foreground" Value="Red"/>
</Style>

这对所有人来说都很好TextBlocks。除此之外我还有一个Button风格包括ControlTemplate看起来像这样(缩短):

<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}" BasedOn="{x:Null}">
   <Setter Property="Foreground" Value="Green"/>
   <Setter Property="Template">
      <Setter.Value>
         <ControlTemplate TargetType="{x:Type Button}">
            <Border x:Name="Border" 
                    Background="{TemplateBinding Background}" 
                    BorderThickness="{TemplateBinding BorderThickness}" 
                    Padding="{TemplateBinding Padding}" 
                    Height="24" 
                    BorderBrush="{TemplateBinding BorderBrush}">
               <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                 VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                 TextBlock.Foreground="{TemplateBinding Foreground}"/>
            </Border>
            <ControlTemplate.Triggers>...</ControlTemplate.Triggers>
         </ControlTemplate>
      </Setter.Value>
   </Setter>
</Style>

注意这条线TextBlock.Foreground="{TemplateBinding Foreground}" in the ContentPresenter。这应该将按钮文本设置为绿色,事实上它在 Visual Studio 的设计器视图中也是如此。但是当我编译并运行程序时,按钮文本是红色的,文本颜色是默认设置的TextBlock风格。我和史努比验证了这一点。

如何防止默认TextBlock风格从覆盖TextBlock.Foreground价值?这OverridesDefaultStyle的财产ContentPresenter在这种情况下没有帮助。

任何想法?


请参阅答案 5这个链接

发生这种情况是因为 ContentPresenter 创建一个 TextBlock 对于字符串内容,从那时起 TextBlock 不在视觉树中,它 将查找应用程序级别 资源。如果你定义了一种风格 对于应用程序中的文本块 水平,然后它将被应用到 ContentControl 中的这些 TextBlock

解决方法是定义一个 System.String 的 DataTemplate,其中 我们可以显式地使用默认值 TextBlock 显示内容。你 可以将该 DataTemplate 放在 您定义的同一字典 TextBlock 样式,这样 数据模板将应用于 无论 ContentPresenter 受什么影响 你的风格。

尝试将其添加到 ResourceDictionary

<DataTemplate DataType="{x:Type sys:String}">
    <TextBlock Text="{Binding}">
        <TextBlock.Resources> 
            <Style TargetType="{x:Type TextBlock}"/>
        </TextBlock.Resources>
    </TextBlock>
</DataTemplate>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

默认 TextBlock 样式覆盖按钮文本颜色 的相关文章

随机推荐

  • PHP 库将 JSON 转换为 CSV?

    我有一个 JSON 服务 需要创建一个脚本将数据导出到 CSV 文件 有没有人可以建议将 JSON 迁移到 CSV 格式的方法或库 这是一个示例格式 但我希望必须改进解决方案才能使用它 service name key value key
  • 警告问题:期望参数 1 为 mysqli_result [重复]

    这个问题在这里已经有答案了 我收到下面列出的以下警告 我想知道如何修复它 Warning mysqli fetch array expects parameter 1 to be mysqli result boolean given on
  • 获取父片段 API 16

    我们都知道getParentFragment of FragmentAPI 17 中引入 那么如果我们想在 API 16 及以下版本中获取父片段怎么办 考虑到我使用的是原生Fragment有支持FragmentStatePagerAdapt
  • 如何测量 .NET 中多个并发线程的代码块(线程)执行时间

    现在我们只使用这样的东西 stopWatch Start try method finally stopWatch Stop 这对于同步方法来说效果很好 但有些方法是异步执行的 因此当多个线程执行时时间会出现偏差 是否有与 System D
  • 将Excel数据表加载到Oracle数据库

    我正在寻找一个免费工具来将 Excel 数据表加载到 Oracle 数据库中 我尝试了 Oracle SQL Developer 但它不断抛出 NullPointerException 有任何想法吗 Excel gt CSV gt Orac
  • 离散搜索栏

    我正在尝试创建一个离散搜索栏对于 Android 应用程序 我知道我可以设置最大值和最小值SeekBar 我理想的解决方案是Click示例如下 但我希望该栏以特定的间隔在滑块上上下移动 在我的例子中每 10 次 所以唯一可用的选项SeekB
  • ASP.NET MVC - 从控制器查找 App_Data 文件夹的绝对路径

    在 ASP NET MVC 项目中从控制器查找 App Data 文件夹的绝对路径的正确方法是什么 我希望能够暂时使用 xml 文件 并且不想对路径进行硬编码 这不起作用 HandleError public class HomeContr
  • 如何检查Excel中的日期单元格是否为空?

    如果感觉这应该很容易 但如果不再次检索单元格的值 我就无法让它工作 首先 我有 2 个日期单元格 Dim agreedDate As Date Dim completedDate As Date 这有效 但看起来很乱 agreedDate
  • 使用 JDT 以编程方式格式化源代码

    我正在使用 JDT 生成一些类 之后 我想格式化整个 ICompilationUnit 就像我在打开的编辑器中按 Ctrl Shift F 源 gt 格式 而不进行选择一样 高度赞赏 JDT 中用于以编程方式格式化源代码的 API 的任何指
  • 字符数组作为 C++ 映射中的值

    我想定义类似的东西 Map
  • 错误:RPC 失败; curl 92 HTTP/2 流 0 未完全关闭:PROTOCOL_ERROR (err 1)

    错误 RPC 失败 curl 92 HTTP 2 流 0 未完全关闭 PROTOCOL ERROR err 1 我在写 git 时尝试了 推 但是 以下消息并不能解决问题 您可以强制 git 使用 http 版本 1 1 git confi
  • 如何以编程方式在 GridView 中插入行?

    我在 asp net 2 0 中有一个带有行选择链接的数据绑定 GridView 当选择一行时 我想以编程方式在所选行下方添加一个表格行 以便嵌套另一个网格等 我正在为客户和一篇文章研究这个问题 我认为今晚我的谷歌能力不强 有什么建议么 编
  • 有没有办法正确集成 spring-batch-admin 和 spring-boot ?

    根据文档Spring Batch admin 很容易嵌入到现有的应用程序中 只需复制 web xml 和 index jsp 然后添加所需的依赖项就足以使其正常工作 但如果我想在现有的 Spring Boot 项目中使用它 情况会变得更糟
  • 如何用 Python 制作命令行界面或解释器

    我已经开发了class1 py class2 py等 并在每个类中实现了函数 例如Operator py 有加 减 时间 除函数 如何为这些类构建命令行界面 另外对于这个 CLI 它是否是一个无限循环 main 用于互动 CLI 如何给出一
  • Cocoa 类别命名约定的最佳实践

    我正在整理我古老的 Cocoa 代码以使用现代命名约定 关于最佳实践已有很多讨论 但我不确定一件事 我正在考虑为类别方法名称添加前缀 以确保唯一性 人们似乎普遍认为这是一个好主意 尽管大多数人可能不会打扰 我的问题是 怎么样NSDictio
  • 使用 AngularFirestore 和 firebase 时出现“错误 TypeError:Object(...) 不是函数”

    我想在我的应用程序中使用 firebase 和 angularfire2 首先 我安装了它们 并声明 在环境 ts中 export const environment production false firebase apiKey sfs
  • 锁屏上的 AVAudioPlayer

    我已经使用实现了一个音频播放器AVAudioPlayer not AVPlayer 我可以使用以下方法处理远程控制事件 到目前为止它工作得很好 但是我看到了另外两个subtypes对于这些事件 UIEventSubtypeRemoteCon
  • PIP (Python):导入错误:无法导入名称 _remove_dead_weakref

    我遇到了以下错误 我进行了很多搜索 但一直无法找到好的解决方案 请遇到此类错误并解决的任何人 请帮忙 File c python27 lib runpy py line 174 in run module as main main fnam
  • 为什么 JSON 文档没有完全消耗?

    我正在尝试从外部源检索 JSON 数据以进行练习 我已经准备好所有代码 但由于某种原因 我收到一条错误消息 指出该文档未完全使用 我已经观看并阅读了多个教程和指南 但似乎仍然无法正确理解 我也在堆栈中搜索答案 但由于我不知道出了什么问题 所
  • 默认 TextBlock 样式覆盖按钮文本颜色

    我的问题出现在 NET 3 5 SP1 中的 WPF 中 可以描述如下 我有一个默认的Style击中所有TextBlock我的用户界面中的元素 看起来就是这样 这对所有人来说都很好TextBlocks 除此之外我还有一个Button风格包括