如何将ResourceDictionary设置为ContentControl.Content?

时间:2012-08-22 23:15:37

标签: silverlight xaml styles silverlight-5.0 resourcedictionary

在我的应用程序中,我有一个ContentControl,这会使用Content显示DataTemplates属性。

现在,我需要将此DictionaryResource传递给content属性。所以我这样做了(我不确定)

        <ContentControl Content="{Binding CurrentViewModel">
            <ContentControl.Resources>
                <ResourceDictionary Source="/MathematicsBusiness.Infrastructure;component/Resources/ThemeResources.xaml" />
            </ContentControl.Resources>
        </ContentControl>

这包含我的字典:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style TargetType="TextBlock">
        <Setter Property="FontSize" Value="40" />
        <Setter Property="FontFamily" Value="Georgia" />
    </Style>

    <!--<Style x:Key="TextBlockStyle" TargetType="TextBlock">
        <Setter Property="FontSize" Value="40" />
        <Setter Property="FontFamily" Value="Georgia" />
    </Style>-->
</ResourceDictionary>

并且它有效,所有数据模板都显示具有该样式的文本块。但是如果我使用评论的样式,它就不起作用。它给我一个错误:

  

找不到名称/键TextBlockStyle的资源

为什么会这样?如果样式没有Key,则可以。但是,如果我设置了密钥,它就不起作用。

1 个答案:

答案 0 :(得分:0)

如果您在不使用密钥的情况下指定密钥,则应该不会出现问题。我的猜测是你在其他地方调用TextBlockStyle(可能是你的视觉状态或你的代码)。

如果您尝试使用密钥,但通常会发生错误,但您尚未在xaml中指定该错误。

其他可能的原因是您正在尝试使用ContentControl之外的密钥。