0

我遇到了 WPF 选项卡视图控件的问题,我希望这里的人可以帮助我。

我希望我的选项卡视图控件为选项卡标题使用圆角,因为我认为圆形选项卡看起来更好。

为此,我使用 Expression Blend 中的“编辑副本”命令修改了选项卡的默认控件模板。然后,我只需为选项卡标题的“边框”设置圆角半径。

然而,这种方法的问题在于“编辑副本”命令最终会为用于显示“活动”和“鼠标悬停”选项卡背景的渐变画笔生成文字颜色值。

当启用“高对比度”模式时,这会导致问题。不像其他控件那样切换到高对比度配色方案,带有修改模板的选项卡将使用渐变画笔中为活动选项卡和鼠标悬停选项卡指定的文字颜色值。这最终使这些选项卡不可读,因为当操作系统切换到高对比度模式时,选项卡标题上的文本变为“白色”(灰色背景上的白色文本不可读)。

我想当启用高对比度模式时我可能能够切换回方形标签,这将解决这个特殊问题。但是,我想安装了自定义 Windows 主题的用户也会遇到类似的问题。

所以,我想知道的是:

  1. 有什么办法可以将渐变更改为指向系统资源而不是文字值,以便在启用高对比度模式时正确更新颜色
  2. 或者,有没有办法让我在选项卡标题的边框上设置圆角半径而不创建新的控件模板?

编辑:

我认为我应该更明确地说明我在寻找什么。我想要一个与默认选项卡控件完全一样的选项卡控件,除了选项卡标题角是圆角的。默认情况下,选项卡控件将使用渐变作为选项卡背景,并在用户将鼠标悬停在非活动选项卡上时“突出显示”非活动选项卡。当操作系统切换到高对比度模式时,它还将正确响应并更改其颜色和鼠标悬停行为。我仍然需要这种行为。

在 Blend 中创建默认控制模板的副本会创建一个在高对比度模式下无法正常工作的控制模板。我想知道我需要对控件模板或窗口中的代码做什么,以使生成的控件模板在高对比度模式下正常工作。

4

2 回答 2

1

如果不为 TabItem 创建自定义模板,则无法制作圆角标签。在混合中执行“编辑副本”我相信会根据您拥有的当前窗口主题创建默认模板(但是我可能是错的。我相信您执行 controltemplate 转储它得到的是由系统确定的当前控制模板主题。就像在presentation.aero或类似的东西中)。但是,如果您想提供系统在更改时将使用的颜色,请在您的模板中像这样对它们进行 sepcify:

Color="{DynamicResource {x:Static SystemColors.XXXX}"

这将使用系统颜色来设置控件的样式,并将更新以反映系统主题的变化。

于 2008-11-25T16:25:53.293 回答
0

在 Blend 中向您的窗口添加一个简单的样式控件。这将添加 SimpleStyles.xaml,包括一个用于选项卡控件的。

看看 Family.Show 以及他们如何制作黑色和银色主题。

在这两者之间,您应该有一个很好的例子来说明如何自定义选项卡控件和处理不同的主题。

于 2008-11-22T02:30:51.403 回答