我遇到以下问题:我有一个Button
,里面有StackPanel
,ContentControl
内有Label
和StackPanel
,并且我已设置按钮的属性IsMouseOver
和IsPressed
以在动作发生时更改按钮的颜色。但是,当鼠标悬停在按钮上时,我想反转标签的颜色。
这是我的按钮代码:(因为我认为我的描述不够清晰):
<Button Template="{StaticResource OnMouseOver}" ToolTip="Release" >
<StackPanel Orientation="Horizontal">
<ContentControl Template="{StaticResource Release}"/>
<Label Content="Release" Foreground="#457345" />
</StackPanel>
</Button>
这是我按下按钮时以及当鼠标悬停在按钮上时更改按钮属性的方式:
<ControlTemplate TargetType="Button" x:Key="OnMouseOver">
<Border x:Name="border" Background="Transparent">
<ContentPresenter ContentSource="Content" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="Background" Value="#A1CCA1"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" Value="#AFD8AF"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
为了记录,我尝试为我的标签做ControlTemplate
之类的事情,但它没有用,我的标签在我做的时候就消失了。
你能帮帮我吗?
答案 0 :(得分:1)
试试这个:
<ControlTemplate TargetType="Button" x:Key="OnMouseOver">
<Border x:Name="border" Background="Transparent">
<StackPanel Orientation="Horizontal">
<ContentControl />
<Label x:Name="label" Content="Release" Foreground="#457345" />
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="Background" Value="#A1CCA1"/>
<Setter TargetName="label" Property="Foreground" Value="#AFD8AF"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" Value="#AFD8AF"/>
<Setter TargetName="label" Property="Foreground" Value="#A1CCA1"/>
</Trigger>
</ControlTemplate.Triggers>
<Button x:Name="button" Template="{StaticResource OnMouseOver}" ToolTip="Release" Height="42" VerticalAlignment="Bottom" Margin="235,0,127,143" >
</Button>