在后面的代码中获取控件的样式{StaticResource {x:Type TextBlock}}

5 wpf styles default code-behind

我想获取后面代码的默认值Style,TextBlock而无需TextBlock Style在资源中添加自定义默认值XAML.

我有一个像这样的方法:

public TextBlock DrawTextBlockAtPoint(string text, Style style)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

我想提供一个只使用常规的覆盖TextBlock Style:

public TextBlock DrawTextBlockAtPoint(string text)
{
   var style = GetDefaultStyleForProperty(TextBlock.StyleProperty);
   DrawTextBlockAtPoint(text, style)
}
Run Code Online (Sandbox Code Playgroud)

反正有没有这样做?

Szy*_*zga 9

静态资源标记扩展实质上是尝试以找到定义了关键的资源.如果可以使用以下方法检索TextBlock类型的默认样式:{StaticResource {x:Type TextBlock}}您应该能够使用以下代码在代码中获取它:

var defaultTextBlockStyle = FindResource(typeof(TextBlock));
Run Code Online (Sandbox Code Playgroud)

当然,这需要在定义FindResource方法的上下文中调用.我在我的主Window类中使用它并且它可以工作.

希望这可以帮助.