我在我的资源字典中定义了一个ComponentResourceKey,如下所示:
<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:Resources}, ResourceId=BaseControlStyle}" TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="4,4,0,0" />
</Style>
我有一个静态类,我用它作为提供资源键的快捷方式:
public class Resources
{
public static ComponentResourceKey BaseControlStyleKey
{
get
{
return new ComponentResourceKey(typeof(Resources), "BaseControlStyle");
}
}
}
现在通常当我使用这种风格时,我会做这样的事情:
<TextBlock Style="{DynamicResource {x:Static local:Resources.BaseControlStyleKey}}"/>
但是,我有一个场景需要在代码中设置样式:
myTextBox.Style = Resources.BaseControlStyleKey // Does not work.
我是如何从ComponentResourceKey中提取样式的?
答案 0 :(得分:4)
我明白了。
myTextBox.Style =
Application.Current.TryFindResource(Resources.BaseControlStyleKey)
as Style;
答案 1 :(得分:1)
创建单独的ComponentResourceKey holder(Resources类)后,您可以简化密钥声明。
代替:
<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:Resources}, ResourceId=BaseControlStyle}" TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="4,4,0,0" />
</Style>
您只需使用:
<Style x:Key="{x:Static local:Resources.BaseControlStyle}" TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="4,4,0,0" />
</Style>