我是WPF的新手,我想制作一行按钮,当您将鼠标悬停在它们上面时,它们将显示为红色背景色,而当您单击该按钮时,您单击的背景就会设置为红色。
我已经完成了这个工作,现在唯一的问题是,在单击按钮后,按钮不再具有IsMouseOver功能。
应用程式
<Style x:Key="MenuButton" TargetType="{x:Type Button}">
<Setter Property="Background" Value="#373442" />
<Setter Property="Foreground" Value="White" />
<Setter Property="FontSize" Value="15" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border CornerRadius="0" Background="{TemplateBinding Background}">
<Grid>
<ContentPresenter x:Name="MyContentPresenter" Content="{TemplateBinding Content}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="15px"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#F06060" />
<Setter Property="Foreground" Value="White" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="#F06060" />
<Setter Property="Foreground" Value="White" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
按钮XAML
<Button Style="{StaticResource ResourceKey=MenuButton}" Content="Logout" HorizontalAlignment="Left" VerticalAlignment="Top" Width="201" Height="58" Margin="0,315,0,0"/>
C#代码
public static Button[] buttonArray = new Button[3];
public TaskManager()
{
InitializeComponent();
buttonArray[0] = HomeButton;
buttonArray[1] = TasksButton;
buttonArray[2] = AdminButton;
}
public static void paneSwitcher(Button button)
{
foreach (Button aButton in buttonArray)
{
aButton.Background = Brushes.Red;
}
button.Background = new SolidColorBrush(Color.FromArgb(255, 240, 96, 96));
}
private void HomeButton_Click(object sender, RoutedEventArgs e)
{
paneSwitcher(HomeButton);
}
private void TasksButton_Click(object sender, RoutedEventArgs e)
{
paneSwitcher(TasksButton);
}
private void AdminButton_Click(object sender, RoutedEventArgs e)
{
paneSwitcher(AdminButton);
}
您可以将替换为Button
具有ToggleButton
其他IsChecked
状态的。
然后,您可以简单地向您添加另一个触发器来ControlTemplate
更改Button
单击时的颜色:
<Style x:Key="MenuButton" TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="#373442" />
<Setter Property="Foreground" Value="White" />
<Setter Property="FontSize" Value="15" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border CornerRadius="0" Background="{TemplateBinding Background}">
<Grid>
<ContentPresenter x:Name="MyContentPresenter" Content="{TemplateBinding Content}"
HorizontalAlignment="Left" VerticalAlignment="Center" Margin="15px"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="Blue" />
<Setter Property="Foreground" Value="White" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#F06060" />
<Setter Property="Foreground" Value="White" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="#F06060" />
<Setter Property="Foreground" Value="White" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
按钮XAML
<ToggleButton Style="{StaticResource ResourceKey=MenuButton}" Content="Logout" HorizontalAlignment="Left" VerticalAlignment="Top" Width="201" Height="58" />
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句