您可以使用一個切換按鈕,它的器isChecked財產
<ToggleButton Content="Click Me!" Margin="209,135,263.4,140.8">
<ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="bdr_main" CornerRadius="3" Margin="0"
Background="LightGray" BorderThickness="1" BorderBrush="Black">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="bdr_main" Property="Background" Value="LightGreen"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="bdr_main" Property="Background" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ToggleButton.Template>
</ToggleButton>
編輯
如果你想改變代碼的背景顏色的背後,你需要實現它的TemplateBinding
prop="{TemplateBinding Background}
Stripp荷蘭國際集團的XAML到骨頭
<ToggleButton Click="Button_Click" Content="Click Me!"
Background="LightGray" Margin="209,135,263.4,140.8">
<ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="bdr_main" CornerRadius="3" Margin="0" BorderThickness="1" BorderBrush="Black"
Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
</Border>
</ControlTemplate>
</ToggleButton.Template>
</ToggleButton>
現在你可以
using System.Windows.Controls.Primitives;
...
public void Button_Click(object sender, EventArgs e)
{
var butt = sender as ToggleButton;
if ((bool)butt.IsChecked)
butt.Background = Brushes.Red;
else
butt.Background = Brushes.LightGray;
}
鼠標懸停事件最好在ControlTemplate中處理,以獲得相同的行爲在我的第一篇文章中,您可以將其更改爲
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="bdr_main" CornerRadius="3" Margin="0" BorderThickness="1" BorderBrush="Black"
Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsChecked" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter TargetName="bdr_main" Property="Background" Value="LightGreen" />
</MultiTrigger.Setters>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
更改邊框使用TemplateBinding而不是Background =「LightGray」 – kenny
對不起 您的代碼工作 Thx很多 您是否有與WPF代碼相同的解決方案? – realiste
你的Xaml看起來像WPF?編號 – kenny