1

このような同様の質問がされています。回答されたものもあれば(私の場合ではありません)、回答されていないものもあります。シンプルな Silverlight アプリ プロジェクト、UserControl を含む 2 番目の Silverlight クラス ライブラリ プロジェクト、および多数のリソース ディクショナリを含む 3 番目のプロジェクトがあります。プロジェクト構造は次のようになります。

Silverlight アプリ プロジェクト:

Client.Login
  - App.xaml
  - MainPage.xaml

UserControl を使用した Silverlight ライブラリ プロジェクト:

Client.UX.Login
 - Login.xaml <<- The user control

Client.UX.ResourceDictionaries
 - Buttoms.xaml
 - ComboBoxes.xaml
 - etc...

Client.UX.Loginへのプロジェクト参照がClient.UX.ResourceDictionariesあり、Login.xaml の UserControl 内に次のように必要に応じてこれらの辞書が含まれています。

<UserControl.Resources>
    <ResourceDictionary>            
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Client.UX.ResourceLibraries;component/Brushes.xaml" />
            <ResourceDictionary Source="/Client.UX.ResourceLibraries;component/TextBoxes.xaml" />
            <ResourceDictionary Source="/Client.UX.ResourceLibraries;component/PasswordBoxes.xaml" />
            <ResourceDictionary Source="/Client.UX.ResourceLibraries;component/Buttons.xaml" />
            <ResourceDictionary Source="/Client.UX.ResourceLibraries;component/ComboBoxes.xaml" />
            <ResourceDictionary Source="/Client.UX.ResourceLibraries;component/RadioButtons.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

Client.LoginUserControl のライブラリのみを参照します: Client.UX.Login。

アプリを実行すると、上記の XAML の最初の ResourceDictionary マージで次のエラーが発生します。

Failed to assign to property 'System.Windows.ResourceDictionary.Source'.

内部例外はありますが、KeyNotFoundExceptionBrushes.xaml の唯一の XAML は非常に単純です。ボタン関連のスタイルをいくつか。

Client.UX.ResourceLibrariesinへの参照を追加することで問題を解決できますClient.Loginが、それでは ResourceLibraries を分離する目的が無効になりますよね?

二次プロジェクト参照としてのリソース ディクショナリがこの種の例外をスローする理由を知っている人はいますか? または、リソースを含むライブラリへの直接参照をルート プロジェクトに提供せずに、この問題を解決する方法を教えてください。

4

0 に答える 0