代码之家  ›  专栏  ›  技术社区  ›  Scott Wisniewski

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

  •  0
  • Scott Wisniewski  · 技术社区  · 17 年前

    我的WPF选项卡视图控件有问题,我希望这里的人能够帮助我。

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

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

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

    所以,我想知道的是:

    1. 是否有任何方法可以更改渐变以指向系统资源而不是文字值,以便在启用高对比度模式时正确更新颜色
    2. 或者,是否有一种方法可以在不创建新控件模板的情况下在选项卡标题的边框上设置角半径?

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

    2 回复  |  直到 17 年前
        1
  •  1
  •   Micah    17 年前

    如果不为TabItem创建自定义模板,就无法创建圆角选项卡角。在blend中执行“编辑副本”我相信会根据您拥有的windows当前主题创建默认模板(但是我可能错了。我相信您执行controltemplate转储时得到的是由系统主题确定的当前控制模板。如presentation.aero或类似内容)。但是,如果要提供更改时系统将使用的颜色,请在模板中按如下方式指定它们:

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

        2
  •  0
  •   Geoff Cox    17 年前

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

    看看这个家庭。展示他们是如何制作黑色和银色主题的。

    推荐文章