2009-06-10 13 views
5

WPF(.net 3.5 sp1、VSのみ、まだブレンドしない)を使用してデスクトップアプリケーションを開発し始めました。XAML:複数のプロジェクトで使用するデータテンプレートとスタイルを定義する方法

私はいくつかのライブラリにいくつかの一般的な再利用可能なコンポーネントを持っていました。

スタイラス&のデータテンプレートをいくつかのプロジェクトで再利用できるように定義することで、一貫したルックアンドフィールを実現できますか?

私はResourceDictionariesを見て、彼らは私が必要なものであれば

  1. 彼らは私が
  2. 必要なものだということをわからないよ、どのように私は 他のプロジェクトに「インポート」、それらをして ことができましたその内容をXamlで参照してください。

おかげで、

答えて

10

ResourceDictionaryは、プロジェクト間でリソース辞書を含むxamlファイルをコピーするか、プロジェクトから参照するDLLにコンパイルすることができます。

同じプロジェクトの辞書を参照するには、App.xamlにこのようなものを追加します(この場合、私は自分のリソースをControlStylesフォルダに保存します)。

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="ControlStyles/Colors.xaml"/> 
      <ResourceDictionary Source="ControlStyles/Window.xaml"/> 
      <ResourceDictionary Source="ControlStyles/Button.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

あなたが(スタイル用DLLがStyleAssemblyと呼ばれている場合は、「コンポーネント」という言葉は、実際の構文の一部ではなくディレクトリ名です)この構文を使用することができます別のDLLにコンパイルした場合:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/> 
      <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Window.xaml"/> 
      <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Button.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 
+0

Yer only a Star、thanks :) –

0

hereが説明するように、マージされたリソースディクショナリをしたいです。

3

@Nirが正しいと、私もやりたい唯一のことは、この速記で

<ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/> 

を交換することである

リソースが見つかると、ランタイムによってpack:// application:,,という接頭辞が付けられます。

関連する問題