C# 如何在鼠标悬停时使按钮内的矩形改变颜色?
我如何在我的按钮里面得到一个矩形来翻转它的颜色 在悬停时,我似乎需要“fill”属性,它不在 按钮 以下是我想要的: 看到悬停按钮底部的蓝色矩形了吗?我需要它 将按钮颜色更改为蓝色 我试过这个:C# 如何在鼠标悬停时使按钮内的矩形改变颜色?,c#,wpf,xaml,C#,Wpf,Xaml,我如何在我的按钮里面得到一个矩形来翻转它的颜色 在悬停时,我似乎需要“fill”属性,它不在 按钮 以下是我想要的: 看到悬停按钮底部的蓝色矩形了吗?我需要它 将按钮颜色更改为蓝色 我试过这个: <Style TargetType="{x:Type Button}" x:Key="MenuButton"> <Setter Property="Background" Value="#d8d8d8" />
<Style TargetType="{x:Type Button}" x:Key="MenuButton">
<Setter Property="Background" Value="#d8d8d8" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="anything" Value="Blue" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" ClipToBounds="True">
<!-- Inner Rectangle with rounded corners. -->
<Rectangle x:Name="innerRectangle" Fill="{TemplateBinding Background}"/>
<!-- Present Content (text) of the button. -->
<DockPanel Name="myContentPresenterDockPanel" HorizontalAlignment="center">
<ContentPresenter x:Name="myContentPresenter" Margin="12" TextBlock.Foreground="{TemplateBinding Foreground}" TextBlock.FontSize="14" TextBlock.FontWeight="Light"/>
</DockPanel>
<Rectangle x:Name="test" Fill="{TemplateBinding anything }" Height="4" VerticalAlignment="Bottom"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#d2d2d2"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="anything" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
显然,如果填充是button中的一个属性,那么这会起作用,我是不是完全错了
谢谢大家 您必须使用ControlTemplate.Triggers,然后您可以使用setter中的TargetName访问矩形。 像这样:
<Style TargetType="{x:Type Button}" x:Key="MenuButton">
<Setter Property="Background" Value="#d8d8d8" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" ClipToBounds="True">
<!-- Inner Rectangle with rounded corners. -->
<Rectangle x:Name="innerRectangle" Fill="{TemplateBinding Background}"/>
<!-- Present Content (text) of the button. -->
<DockPanel Name="myContentPresenterDockPanel" HorizontalAlignment="center">
<ContentPresenter x:Name="myContentPresenter" Margin="12" TextBlock.Foreground="{TemplateBinding Foreground}" TextBlock.FontSize="14" TextBlock.FontWeight="Light"/>
</DockPanel>
<Rectangle x:Name="test" Fill="Black" Height="4" VerticalAlignment="Bottom"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#d2d2d2"/>
<Setter Property="Foreground" Value="White"/>
<Setter TargetName="test" Property="Fill" Value="Green" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
请粘贴您的xaml文本,这样会更容易解决。您好,我现在已经完成了。非常好,非常好。我现在对它的工作原理有了更好的理解。非常感谢。