除非 children 悬停在上方,否则 DockPanel 的 IsMouseOver 触发器不会触发

IsMouseOver trigger for DockPanel not firing unless children are hovered over

这个问题之前已经被问过几次,但这次,我找到的 none 个答案证明是有效的。

所以我有一个自定义 DockPanel,里面有 2 个 child 个元素,1 个 TextBox 和 1 个 Image。 我打算让 DockPanel 在悬停时改变颜色,所以我在里面放了一个触发器。但目前,如果我将鼠标悬停在 children 上,它只会改变颜色,而将鼠标悬停在元素之间的空白处不会做任何事情。

我读过提到使用 isHitTestVisible 的类似帖子,但它没有任何作用。

我的代码的简短版本如下:

<DockPanel>

    <!-- Change color on mouse hover -->
    <DockPanel.Style>
        <Style>
            <Style.Triggers>
                 <Trigger Property="DockPanel.IsMouseOver" Value="True">
                       <Setter Property="DockPanel.Background" Value="#FFe6ffe6"/>
                 </Trigger>
            </Style.Triggers>
        </Style>
    </DockPanel.Style>

    <StackPanel Orientation="Vertical" DockPanel.Dock="Center">
        <!-- TextBox and Image code here -->
    </StackPanel>
</DockPanel>

将此添加到您的停靠面板样式。

<Trigger Property="DockPanel.IsMouseOver" Value="False">
      <Setter Property="DockPanel.Background" Value="Transparent"/>
</Trigger>