我想为我的WPF应用程序中的按钮创建自定义样式。当鼠标悬停在它们上面时,我希望能够更改它们的Backgroound
和BorderThickness
属性。以编程方式WPF更改按钮悬停样式
一些按钮是在c#中动态创建的,所以我不认为xaml解决方案就足够了。
我试过在c#中使用触发器和安装程序来实现我的目标,但是我无法使它工作,悬停颜色始终保持浅蓝色。
这里是我是如何创建一个按钮:
Button but = new Button()
{
Height = 40,
Background = new SolidColorBrush(Colors.Gray),
Content = new Label() {
FontSize = 13,
FontWeight = FontWeights.Medium,
Foreground = new SolidColorBrush(Colors.White)
}
}
stackPanel.Children.Add(but)
我知道这是不是创建控件的最佳途径,我可能会更好使用MVVM,但我不能改变整个应用程序所以我只是在寻找ac#解决方案。
谢谢!
编辑:
我添加了一个风格App.xaml文件。它看起来像这样(UpperMenuModeButton是基于常规按钮我的控制):
<Application.Resources>
<Style TargetType="UpperMenuModeButton" x:Key="UpperMenuModeButton" >
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</Application.Resources>
我设置的风格,同时创造这样的按钮:
this.Style = (Style) Resources["UpperMenuModeButton"];
我仍然得到规则淡蓝色背景徘徊。
用鼠标悬停触发器在xaml中创建一个通用样式,并在您的代码中应用[样式](http://stackoverflow.com/questions/10686917/setting-the-style-property-of-a-wpf-label -in-code) –
@MathewJibin谢谢你的回答!你能否提供更多关于如何创建通用样式的信息,以便我可以将它应用到不同窗口中的按钮上? –
或者只是创建一个样式来实现特定类型的所有元素,如按钮 – Emad