Finding the default style for a type in code behin

2020-03-01 17:05发布

问题:

In WPF, you can create a Style that acts as the default for a control type in XAML:

<Style TargetType="{x:Type local:MyControl}">
    . . .
</Style>

Then, when WPF goes to display that control, it looks up that Style from the resources based on the its type.

I want to do the equivalent of this in the code-behind of my program. How do I find that Style?

回答1:

You can search for the style in the Application-level resources by using the control type as the key:

Style defaultStyle = Application.Current.TryFindResource(typeof(MyControl)) as Style;


回答2:

object globalStyleDefinedByApp;
Style globalStyle = new Style(typeof(TargetType));
if (Application.Current.Resources.TryGetValue(typeof(TargetType), out globalStyleDefinedByApp))
{
    globalStyle = globalStyleDefinedByApp as Style ?? globalStyle;
}

In case somebody lands here looking for a solution for Universal Windows Projects (UWP), no TryFindResource exists so the above is how you have to do it.