2016-05-04 8 views
0

私はそれぞれ独自のカスタムユーザーコントロールを含む複数のクラスライブラリを持っています。プロジェクトで使用されているすべてのリソース辞書を含む別の共通ライブラリを用意して、プロジェクト内で使用されているすべてのコントロールの背景色を1か所から変更できるようにしたいと思います。複数のクラスライブラリにどのようにスタイルを適用する必要がありますか?

中央の場所からこれらのコントロールをすべてスタイルする最も良い方法は何ですか?

答えて

0

特定のプロジェクトにリソースディクショナリファイルがある場合は、それらを参照する必要がある場所で、「pack」URI構文を使用してそれらをマージします。したがって、ユーザー制御では、例えば: -

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/SomeApplication.Common.UI;component/Themes/Metro/colors.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/SomeApplication.Common.UI;component/Themes/Metro/buttonstyles.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/SomeApplication.Common.UI;component/Themes/Metro/fonts.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 

     <!-- Any "local" user control styles go here --> 
    </ResourceDictionary> 
</UserControl.Resources> 

"パック" 構文は、この形をとる: -

パック://アプリケーション:,,,/[アセンブリ名]、コンポーネント/ [リソースパス&ファイル名]「上記の例では

は、 『SomeApplication.Common.UIは、』リソースファイルを見つけることができます私のプロジェクト/アセンブリの名前であり、ファイルが呼ばれるプロジェクトのサブフォルダに存在します」 \ Themes \ Metro "あなたのユーザーコントロールを持つプロジェクトは明らかに必要ですリソースを含むプロジェクト/アセンブリを参照する!

また、実際には個々のリソースファイルをマージして作業する必要はありません。アプリケーションはコンパイルして実行しますが、Visual Studio(またはResharper ?!)は設計時にそれらを解決できないため、XAMLエディタでスタイル名の下にうねりができます。

関連する問題