首页 > 解决方案 > 如何在 WPF 中为 Canvas 使用 Style.Triggers

问题描述

我想通过这段代码为画布制作一个简单的效果,但它不起作用。

<Canvas.Style>
    <Style>
        <Setter Property="Canvas.Background" Value="Transparent"/>
        <Style.Triggers>
            <Trigger Property="Canvas.IsMouseOver"  Value="True">
                <Setter Property="Canvas.Background" Value="LightSkyBlue">
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</Canvas.Style>

标签: wpf

解决方案


您的<Style>元素缺少TargetType. 因为控件可以由多个控件组成,您可以使用TargetType它们来定位不同的控件类型,并且这样做还会为您提供子元素的上下文智能感知。

<Canvas HorizontalAlignment="Left" Height="100" Margin="215,128,0,0" VerticalAlignment="Top" Width="100">
    <Canvas.Style>
        <Style TargetType="Canvas">
            <Setter Property="Background" Value="Transparent"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver"  Value="True">
                    <Setter Property="Canvas.Background" Value="LightSkyBlue">
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Canvas.Style>
</Canvas>

我觉得 CSS 在简化样式方面确实做得很好,所以 WPF 必须如此深奥真是令人遗憾。


推荐阅读