2008-11-22 92 views
0

我遇到了WPF选项卡视图控件的问题,我希望这里有人能够帮助我。WPF选项卡视图,自定义模板和辅助功能

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

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

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

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

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

所以,我想知道的是:

  1. 有没有什么办法可以改变梯度指向系统资源,而不是字面值,使得它的颜色会被更新正确时高对比度模式已启用
  2. 或者,有没有办法让我在标签页眉的边框上设置角落半径而不创建新的控件模板?

编辑:

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

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

回答

1

如果不为TabItem创建自定义模板,则无法制作圆角的制表符角。在混合中做“编辑复制”我相信根据当前你拥有的Windows主题创建了默认模板(我可能会错误,但我相信你做了一个控制模板转储,它得到的是由系统决定的当前控制模板主题,就像presentation.aero或类似的东西)。但是,如果你要提供,该系统将使用颜色时的变化则sepcify他们像这样在你的模板:

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

这将使用该系统的颜色样式的控制和将被更新,以反映变化系统主题。

+0

添加对系统画笔的引用不是问题(我想了很多)。问题是我无法使用系统刷子重新创建控件的默认行为。 – 2008-11-26 01:24:49

0

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

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

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

+0

这只是创建一个新的选项卡控件与控制模板配置为删除所有样式。 这不是我想要的。我想要所有常规造型,但我也希望角落四舍五入。但是,我也希望应用程序在启用“高对比度”模式时可用。 – 2008-11-22 02:48:58