【问题标题】:WPF Hittest NEXT to tabitem not workingWPF Hittest NEXT to tabitem 不起作用
【发布时间】:2015-01-10 11:40:56
【问题描述】:

我在 WPF 中遇到了关于命中测试的问题。我创建了一个自定义 WindowChrome 以使标签页眉溢出到 Chrome 中。但是我遇到了关于命中测试的问题。

当我尝试在不打开选项卡的情况下拖动窗口时,hittest 工作: http://i.imgur.com/D6b1yRz.png

但是一旦我打开一个标签,它就不再在 chrome 上进行测试: http://i.imgur.com/RMH4AwN.png

我基本上在TabControl 的顶部和下方都有一个包含Chrome 的网格。两者都在Grid.Row = "0"TabControlWindowChrome.IsHitTestVisibleInChrome="True" Background="{x:Null}" Grid.RowSpan="2"

我尝试在谷歌上搜索,但找不到解决这个问题的方法。有人能指出我正确的方向吗?

似乎tabitems在它们旁边创建了一个透明的背景而不是x:Null,因此使其无法通过hittest,有没有办法使背景x:Null或什么?

【问题讨论】:

    标签: c# wpf windows xaml hittest


    【解决方案1】:

    你可以用这个映射出Background

    <Style TargetType="TabItem">
     <Setter Property="Background" Value="{x:Null}" />
    </Style>
    

    将其发送至您的Window.Resources。虽然有点不清楚你想用这个来完成什么:你的标签项目只有在你点击它们上的“文本”时才可以选择,否则它现在会点击 windows chrome。

    【讨论】:

    • 我希望能够单击完整的标题并仍然选择它...问题是如果我单击标题旁边的我无法使用 WindowChrome。所以基本上标题旁边的空间需要进行命中测试,但我会先试试这个!
    • “不起作用”是什么意思?没有改变?获取 snoop,并检查后台是否真的得到了x:Null
    【解决方案2】:

    我通过四处窥探来修复它。我发现我需要在 TabControl 中编辑 TabPanel。通过在 TabControl.Resources 中添加以下代码,我解决了问题:

    <Style TargetType="{x:Type TabPanel}">
           <Setter Property="Background" Value="{x:Null}"></Setter>
           <Setter Property="HorizontalAlignment" Value="Left" />
    </Style>
    

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 2017-12-07
      • 2018-01-09
      • 1970-01-01
      • 2019-07-25
      • 2016-02-07
      • 2020-08-22
      相关资源
      最近更新 更多