在XAML中,为什么透明背景会阻止此触发器?

use*_*Bee 5 wpf xaml

仅当我将背景设置为透明时才会发生这种情况,这是我需要的效果.例如,将背景更改为AliceBlue允许触发器生效.幕后可能会遗漏什么?

<Window
    AllowsTransparency="True"
    Background="Transparent">
<Window.Style>
    <Style>
        <Style.Triggers>
            <Trigger Property="Window.IsActive" Value="True">
                <Setter Property="Window.Cursor" Value="ArrowCD" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Style>
<Grid VerticalAlignment="Center" HorizontalAlignment="Center">
    <TextBlock>
        Some Text    
    </TextBlock>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

Mik*_*bel 5

这是在Win32级别处理分层窗口的副作用:完全透明的像素(即,具有零alpha)对于命中测试是不可见的,因此不会生成鼠标事件.

由于所有鼠标事件都通过窗口,因此不会显示窗口的光标.因此,当您的触发器可能触发时,它会被命中测试行为变得无用.即使您将窗口的Cursor属性硬编码ArrowCD,除非鼠标位于窗口内的非透明内容之外,否则您将永远不会看到该光标.

  • 你_could_使用像#01FFFFFF`或`#01000000`这样的低alpha颜色作为背景,但这种效果可能会被挑剔的眼睛看到. (2认同)