首页 > 解决方案 > 当鼠标悬停在窗口上时,如何更改窗口的背景?

问题描述

我已经看到如何通过 MouseClick 或鼠标悬停在它上面来更改Buttona Background。鼠标悬停时如何更改Window背景?我以前从未见过这样的事情......也许有人可以帮助我?这是我用来更改 aButton的背景的代码。我不知道我需要改变什么来做我需要的。

  <Window.Resources>
    <Style x:Key="DelAll">
        <Setter Property="Button.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Grid>
                        <Border Name="Head">
                            <Rectangle HorizontalAlignment="Stretch"  VerticalAlignment="Stretch"  Fill="Transparent" />
                        </Border>
                        <Label Name="NameLable" Content="Delete All" FontStyle="Italic" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Red"></Label>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter TargetName="Head" Property="Background" Value="#3500ACFF"/>
                            <Setter TargetName="Head" Property="BorderBrush" Value="#FF00ACFF"/>
                            <Setter TargetName="Head" Property="BorderThickness" Value="1,1,1,1"/>
                            <Setter TargetName="NameLable" Property="Foreground" Value="Blue"/>
                        </Trigger>
                        <Trigger Property="IsMouseDirectlyOver" Value="true">
                            <Setter TargetName="NameLable" Property="Foreground" Value="White"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <Style x:Key="Del">
        <Setter Property="Button.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Grid>
                        <Border Name="Head">
                            <Rectangle HorizontalAlignment="Stretch"  VerticalAlignment="Stretch"  Fill="Transparent" />
                        </Border>
                        <Label Name="NameLable" Content="Delete" FontStyle="Italic" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Yellow"></Label>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter TargetName="Head" Property="Background" Value="#3500ACFF"/>
                            <Setter TargetName="Head" Property="BorderBrush" Value="#FF00ACFF"/>
                            <Setter TargetName="Head" Property="BorderThickness" Value="1,1,1,1"/>
                            <Setter TargetName="NameLable" Property="Foreground" Value="Green"/>
                        </Trigger>
                        <Trigger Property="IsMouseDirectlyOver" Value="true">
                            <Setter TargetName="NameLable" Property="Foreground" Value="White"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid>
    <Button Style="{StaticResource DelAll}" HorizontalAlignment="Left"  Width="150" Height="50" Margin="95,49,0,0" VerticalAlignment="Top"/>
    <Button Style="{StaticResource Del}" HorizontalAlignment="Left"  Width="150" Height="50" Margin="95,200,0,0" VerticalAlignment="Top"/>
</Grid>

标签: c#wpfxaml

解决方案


这段代码应该为你做,<Window.Style>...</Window.Style>是相关部分!

<Window x:Class="ForStackoverflow.MainWindow"
    ...
    xmlns:local="clr-namespace:ForStackoverflow"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
    <Window.Style>
        <Style TargetType="{x:Type Window}">
        <Setter Property="Background" Value="Blue" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="Background" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Style>

    <Grid>
         Content..
    </Grid>
</Window>

它本质上与按钮相同,只是不是在 中创建 a Style<Windows.Resources>而是设置StyleWindowusing <Window.Style>。希望这可以帮助!


推荐阅读