How do I tell a control or block of controls to not inherit any styles and revert back to the defaults?
I need this because I have an overall theme that mostly works, but for one piece really screws up my design开发者_JAVA百科.
You can create your own container for the piece of UI in question, and set InheritanceBehavior
to SkipAllNow
(or the value appropriate for your situation):
using System.Windows;
using System.Windows.Controls;
public class NoInheritanceContentControl : ContentControl
{
public NoInheritanceContentControl()
{
InheritanceBehavior = InheritanceBehavior.SkipAllNow;
}
}
Then you can just stick NoInheritanceContentControl
in your visual tree and anything inside it won't inherit styles.
This is tricky but you can try this,
- Create DefaultStyles resource dictionary
Create named styles of the control you want to retain default style of as following..
<Style x:Key="DefaultButtonStyle" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"/>
Make sure this DefaultStyles is added before any of your themes are applied, it should be the first entry in your app resources.
Then you can apply style "DefaultButtonStyle" to any control at runtime to retain its default style.
精彩评论