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」というキーを持つスタイルがあります。いずれの場合も、ビューの1つからリソースディクショナリを参照しようとすると失敗します。私の見解からのサンプルコードは以下の通りです:

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

デザイナーはすぐに「リソース'TitleTemplate'を解決できませんでした」というエラーを表示します。リソースディクショナリのキー(つまり、resourceDictionary)を参照すると、エラーはスローされませんが、明らかに何も実行されません。最後に、app.xamlの代わりに、resourceDictionaryをそのリソースのページに直接追加すると、すべてが正常に機能します。使用する予定の各ビューに追加する必要はありません。ここで何かが足りませんか?

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 に答える