私は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から派生したコントロールでしか動作しないようですね。
私は次のことを確認/試してみました:
- 私は、このアセンブリ属性があります:
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
- マイGeneric.xamlファイルは/テーマフォルダに私はDefaultStyleKeyをoveriding試してみました
- です静的なコンストラクタ - しかし、これはすべての空白(おそらく私は特定のコントロールごとに作成されたスタイルを持っていないため)
ライブラリ内のすべてのコントロールにリソースディクショナリを追加することなく、コントロールを使用できますか?
私はWPFユーザーコントロールをWinFormsアプリケーションでホストしています。そのため、Application.xamlでスキンを設定する明白なアプローチを使用できません。 WPFアプリケーション。
このアプローチを試してみてください...幾分か機能していますが、いくつかのネストされたコンポーネントにはスタイルがありませんでした。また、ダイアログボックスが表示されるようにも機能しませんでした。 –
私は、ダイアログボックスも同じテーマを参照する必要があると思います。 –