你需要写BaseOn属性,我说过Style的Merge是很傻的。你把Luna里面的Resource Merge到Windows中了,其中就包括{x:Type Button},但实际使用时应用了就近原则,根本不管你Windows中的Resource。
有三个办法:
1,在你自己定义的Style处写BasedOn={StaticResource {x:Type Button}}。
2,如果你嫌麻烦,你可以用RoutedEvent注册全局的Loaded事件,然后拿到Application中的{x:Type Button}以及控件的style,这个Style已经Sealed了,你需要克隆一份style,然后设置style.BasedOn=application.对应Style,再赋给控件。
3.使用我提到的Merge方法,这样支持DynamicResource替换,代码我给你粘贴到下面:
我把代码给你粘贴过来,其中style.Merge(otherStyle)就是我文中的Merge Styl