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

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

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

然而,这种方法的问题在于<!>“编辑副本<!>”;命令最终生成用于显示<!> quot; Active <!>的渐变画笔的文字颜色值;和<!>“鼠标悬停<!>”;标签背景。

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

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

所以,我想知道的是:

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

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

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

有帮助吗?

解决方案

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

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

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top