WPF样式按钮MouseOver问题

我试图在一个按钮上做一个简单的鼠标hover效果,它确实在鼠标结束时改变颜色,但颜色立即改为默认按钮背景……我怎样才能覆盖这种行为?

这是我的代码:

Style myBtnStyle = new Style(); Trigger bla = new Trigger() { Property = IsMouseOverProperty, Value = true }; bla.Setters.Add(new Setter(Control.BackgroundProperty, Brushes.Black)); myBtnStyle.Triggers.Add(bla); button2.Style = myBtnStyle; 

根据这篇文章 ,这个花哨的动画内置并删除它,你需要覆盖ButtonControlTemplate 。 幸运的是,这并不难。 我使用这篇文章作为源材料,并提出了以下Style给你的想法。

                      

更新:如果您在代码中应用Style并且不想使用ResourceDictionary (可能是更好的方法),则可以使用XamlReader.Load动态加载Style

  const string xaml = @" "; var encoding = new ASCIIEncoding(); var bytes = encoding.GetBytes(xaml); var style = (Style)XamlReader.Load(new MemoryStream(bytes)); Button1.Style = style; 

覆盖ButtonChrome主题会更容易。

创建一个模板并删除RenderMouseOver =“{TemplateBinding IsMouseOver}”

                     

然后添加自己的鼠标hover处理

              

那应该解决它! 🙂