3

我在资源字典中定义了一个 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 中提取样式?

4

2 回答 2

4

我想到了。

myTextBox.Style = 
        Application.Current.TryFindResource(Resources.BaseControlStyleKey)
        as Style;
于 2008-12-03T16:46:26.853 回答
1

创建单独的 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>

您可以简单地使用:

<Style x:Key="{x:Static local:Resources.BaseControlStyle}" TargetType="{x:Type FrameworkElement}">
    <Setter Property="Margin" Value="4,4,0,0" />
</Style>
于 2009-03-26T14:55:05.937 回答