WPF选项卡视图,自定义模板和辅助功能

时间:2008-11-22 02:17:04

标签: .net wpf xaml accessibility

我遇到了WPF Tab View控件的问题,我希望有人可以帮助我。

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

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

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

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

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

所以,我想知道的是:

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

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

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

2 个答案:

答案 0 :(得分:1)

如果没有为TabItem创建自定义模板,则无法制作圆角标签边角。在混合中执行“编辑复制”我相信基于你当前的windows主题创建默认模板(但我可能是错的。我相信你做了一个controltemplate dump它得到的是当前的控制模板,由系统决定主题。像在presentation.aero或类似的东西)。但是,如果您想提供系统将在更改时使用的颜色,请在模板中将它们分类为:

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

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

答案 1 :(得分:0)

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

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

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

相关问题