开发者

WPF: How do I discard all inherited styles?

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,

  1. Create DefaultStyles resource dictionary
  2. 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}}"/>
    
  3. Make sure this DefaultStyles is added before any of your themes are applied, it should be the first entry in your app resources.

  4. Then you can apply style "DefaultButtonStyle" to any control at runtime to retain its default style.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜