2017-10-13 18 views
0

私は、Microsoft Visual Studio 2017で作成されたいくつかのリソースディクショナリを持つユーザーコントロールライブラリプロジェクトを持っています。リソースディクショナリには、他の開発者が利用できるようにしたいXAMLスタイル他のWPF-Appプロジェクトでそれらを使用することができます。ユーザーコントロールライブラリプロジェクトをWPF-Appプロジェクトに複製することは、良い解決策ではありません。 は、私は次のことを試してみました:WPFのdll参照としてユーザーコントロールライブラリを使用

  • UserControleLibraryProjectName/bin/debug/からWPFアプリ内の参照に.dllファイルを追加します。 app.xamlにこれを追加することによって、WPFアプリに使用されるリソースdictionarysインポート
  • <Application.Resources> 
    <ResourceDictionary> 
        <ResourceDictionary.MergedDictionaries> 
         <ResourceDictionary Source="pack://application:,,,/UserControleLibraryProjectName;component/ResourceDictionaryName.xaml" /> 
        </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
    </Application.Resources> 
    
  • MainWindow.xamlでいつものように、リソース辞書エントリを参照:例えばStyle="{StaticResource style1}"ため。

エラーなしでコンパイルされますが、参照先のリソースが見つからないため起動時にクラッシュします。 (System.Windows.Markup.XamlParseException in System.Windows.ResourceDictionary.Source) 私はリソース辞書を参照するソースタグの構文が間違っているとは確信していますが、私は多くの異なる方法を試しました... Btw。ユーザーコントロールライブラリプロジェクトやMainWindow.xamlの辞書エントリを参照する場所にエラーはありません。app.xamlに直接リソースディクショナリコードをコピーすると正常に動作します。

参照先のDLLを正しく使用する方法を知っていますか?

答えて

0

これまでのところ、問題が見つかりました: ユーザーコントロールライブラリプロジェクトの.netバージョンが、WPF-Appプロジェクトのものよりも高かったです。その結果、非互換性があるため、Visual Studioは.dllをWPF-Appプロジェクトのbin/debug/フォルダにコピーしませんでした。 また、参照するユーザーコントロールライブラリのビルドタイプをresourceに設定する必要がありました。

0

あなたのソースが正しく見えます。これは、次のとおりです。

<ResourceDictionary Source="pack://application:,,,/[AssemblyName];component/[PathToFile].xaml" /> 

あなたはまた、それが機能するためには、参照のアプリであなたのClassLibraryする必要があります。

これがうまくいかない場合、まずアセンブリ名がApp.xamlに入れられたものと同じであるかどうか、プロジェクトのプロパティをチェックインします。

関連する問題