2011-09-09 13 views
0

私はUserControlから派生したコントロールだけで構成されるコントロールライブラリを持っています。私は第三者が作成したアセンブリを使用して自分のコントロールを「スキン」しています。定期的なWPFアプリケーションプロジェクトでは、私がする必要があるすべてはApplication.xamlにアセンブリからリソースディクショナリをマージしている:私は私のコントロールにGenerica.xamlにリソースディクショナリを追加することにより、影響を与える同じことをacheiving試してみましたGeneric.xamlを使用してUserControlの派生コントロールをスキンすることはできますか?

<Application x:Class="Application" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <ResourceDictionary Source="/ThirdPartyAssembly;component/SomeSkin.xaml" /> 
    </Application.Resources> 
</Application> 

ライブラリ:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="/ThirdPartyAssembly;component/SomeSkin.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

しかし、これは機能しません。私が読んできたことから、このアプローチはControlから派生したコントロールでしか動作しないようですね。

私は次のことを確認/試してみました:

  1. 私は、このアセンブリ属性があります:<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
  2. マイGeneric.xamlファイルは/テーマフォルダに私はDefaultStyleKeyをoveriding試してみました
  3. です静的なコンストラクタ - しかし、これはすべての空白(おそらく私は特定のコントロールごとに作成されたスタイルを持っていないため)

ライブラリ内のすべてのコントロールにリソースディクショナリを追加することなく、コントロールを使用できますか?

私はWPFユーザーコントロールをWinFormsアプリケーションでホストしています。そのため、Application.xamlでスキンを設定する明白なアプローチを使用できません。 WPFアプリケーション。

答えて

0
  1. Generic.xamlが正しく、あなたのWindowsフォームでホストされている最上位UserControlResourcesセクションで言及されていることを確認してください。

  2. は、私は個人的なテーマがControlから派生したものにも適用されることと思いますので、またUserControlUserControl自体がControlから派生します)。

  3. 上記の手順1と2をテストし、私のユーザーコントロールは、Windowsフォームでホストされているときに、それらをコアラクティブに適用しました。

私は、サードパーティのツール(外部アセンブリ)ベースのテーマを適用しようとしていません。だから、私は確信していないものです....

infragistics(サードパーティ製)のテーマをWindowsFormsHostの自分のコントロールに適用できるかどうかをお知らせします。しかし、重要なのは、最上部のあなたのWindowsFormsHost内のUserControlがテーマを参照する必要があることです。

上記のヒントがうまくいかない場合は、あなたの考えを共有してください。

+0

このアプローチを試してみてください...幾分か機能していますが、いくつかのネストされたコンポーネントにはスタイルがありませんでした。また、ダイアログボックスが表示されるようにも機能しませんでした。 –

+0

私は、ダイアログボックスも同じテーマを参照する必要があると思います。 –

関連する問題