基本的なデフォルト スタイルを持つが、必要に応じて簡単にテーマを設定できる UserControl を WPF で作成するにはどうすればよいですか?
この特定のトピックを説明する適切なガイドライン、ブログ エントリ、または例はありますか?
前もってありがとう、マルコ
基本的なデフォルト スタイルを持つが、必要に応じて簡単にテーマを設定できる UserControl を WPF で作成するにはどうすればよいですか?
この特定のトピックを説明する適切なガイドライン、ブログ エントリ、または例はありますか?
前もってありがとう、マルコ
WPFのテーマは、アプリケーションで使用されるコントロールに適用されるスタイルとテンプレートの定義を保持するResourceDictionaryをそれぞれが含むXAMLファイルのセットです。テーマファイルは次のようになります。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:MyApp.UserControls">
<!-- Standard look for MyUserControl -->
<Style x:Key="Standard" TargetType="{x:Type uc:MyUserControl}">
<Setter Property="Width" Value="22" />
<Setter Property="Height" Value="10" />
</Style>
</ResourceDictionary>
WPFアプリケーションでのテーマのサポートは、アセンブリに次の属性を追加して明示的に有効にする必要があります。
[assembly: ThemeInfo(
ResourceDictionary.None,
ResourceDictionaryLocation.SourceAssembly
)]
これにより、WPFは、themes \ generic.xamlという埋め込みリソースファイルを検索して、アプリケーションのコントロールの既定の外観を決定するように指示されます。
テーマ固有のディクショナリにアプリケーションのアセンブリとは別のファイルが含まれている場合、スタイルとテンプレートのリソースは複合キーを使用する必要があります。これにより、スタイル/テンプレートが適用されるコントロールがどのアセンブリに含まれるかがWPFに通知されます。したがって、前の例は次のように変更する必要があります。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:MyApp.UserControls;assembly=MyApp">
<!-- Standard look for MyUserControl in the MyApp assembly -->
<Style x:Key="{ComponentResourceKey {x:Type uc:MyUserControl}, Standard}">
<Setter Property="Width" Value="22" />
<Setter Property="Height" Value="10" />
</Style>
</ResourceDictionary>
この記事を見てください: http://msdn.microsoft.com/en-us/magazine/cc135986.aspx
組み込みのコントロールのように、ControlTemplate で変更できるコントロールを作成する方法について説明します。