【问题标题】:Set text color for DatePicker in disabled state?在禁用状态下为 DatePicker 设置文本颜色?
【发布时间】:2018-01-15 10:40:55
【问题描述】:

我在我的 C#/WPF 应用程序中使用了很多 DatePickers。将使用此应用程序的人。通常年纪大了,看/阅读有问题。 我需要将文本的浅色更改为更暗的颜色,以便任何人都可以阅读 DatePicker 中的文本。

如何以及在哪里可以做到这一点?

我使用的是 Visual Studio 2010,我在 画笔 部分中只看到 4 个颜色属性:背景、边框画笔、前景和不透明蒙版。

或者我应该用代码来做这个,用代码设置画笔?

【问题讨论】:

  • 我会猜到“前景”是正确的?在代码中设置画笔与在设计器中没有什么不同,只是代码在不同的地方。
  • 他们需要阅读被禁用的东西吗? ;)
  • @Rekshino 是的。特定的 DatePickers 已启用,您可以输入一个值。填写表格后,这些日期选择器将被禁用,但仍应在视图中。
  • 好的,我明白了。然后使用 Bruno V 的解决方案,它似乎是唯一的选择,或者您开发基于 DatePicker 的自定义控件

标签: c# wpf datepicker


【解决方案1】:

Foreground 属性将DatePicker 的文本设置为启用 状态。当DatePicker禁用时,控件模板会向控件添加半透明覆盖。

您可以找到默认模板here。覆盖在 PART_DisabledVisual Grid 中定义。要解决您的问题,您可以在代码中复制整个 ControlTemplate 并将 Fill="#A5FFFFFF" 的两个 Rectangle 修改为 Fill="Transparent"

【讨论】:

  • 布鲁诺,我正在尝试实施您推荐的解决方案,但到目前为止我一直无法这样做。我以前从未使用过模板或控制模板,所以我一直试图先弄清楚这一点。似乎解决方案是在 XAML 中创建 并在那里定义样式;但是,当我尝试在您提供的链接中复制粘贴样式并按原样运行时,控件变成了 DatePicker 的损坏版本。它看起来不像原来那样。您能否提供更多见解?
  • 我相信你的方法是正确的,但微软的默认模板不是最新的。您可以在 Visual Studio 中为 DatePicker 提取默认控制模板,如 here 所述。如我的回答中所述修改 DisabledVisual 颜色应该会导致正确的结果。
猜你喜欢
  • 1970-01-01
  • 2011-09-16
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多