4

我目前正在使用 MVVMLight 框架构建一个 WP7 应用程序。我想将资源字典添加到我的 app.xaml,但是当我这样做时失败了。这是来自 app.xaml 的片段

<Application.Resources>
    <!--Global View Model Locator-->
    <vm:ViewModelLocator x:Key="Locator"
                         d:IsDataSource="True" />
    <!--Merged Resource Dictionaries-->
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="View/StyleResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

因为我使用的是具有键的 ViewModelLocator,所以我收到一条错误消息,警告我不能混合使用和不使用键的资源。在我的资源字典中添加一个键后它看起来像下面这样:

    <ResourceDictionary x:Key="resourceDictionary">
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="View/StyleResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

在资源字典中,我有一个带有“TitleTemplate”键的样式。在任何一种情况下,当我尝试从我的一个视图中引用资源字典时,它都会失败。我认为的示例代码如下:

<TextBlock Name="TB_ContactNameLabel" 
           Text="contact" 
           Style="{StaticResource TitleTemplate}"/>

设计师立即给我错误“资源'TitleTemplate'无法解析”。如果我引用资源字典的键(即:resourceDictionary),则不会引发错误,但它显然没有做任何事情。最后,如果我将 resourceDictionary 直接添加到其资源中的页面,而不是 app.xaml 一切正常。我不想将它添加到我计划使用的每个视图中。我在这里错过了什么吗?

4

1 回答 1

8

您的应用程序资源应如下所示:

<Application.Resources>
    <!--Global View Model Locator-->
    <!--Merged Resource Dictionaries-->
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="View/StyleResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
    </ResourceDictionary>
</Application.Resources>
于 2012-08-09T15:47:59.020 回答