2009-02-23 25 views
8

基本的なデフォルトのスタイルを持ち、必要なときに簡単にテーマを設定できるWPFでUserControlを作成するにはどうすればよいですか?WPFのテーマコントロールWPF

この特定のトピックについて説明する良いガイドライン、ブログエントリ、または例がありますか?

は マルコ

答えて

1

見て、この記事では、事前にありがとう:それはあなたがコントロールに建てられたように、ControlTemplateので変更することができますコントロールを作成する方法について語っhttp://msdn.microsoft.com/en-us/magazine/cc135986.aspx

。 WPFテーマで

+0

リンクあなたが記事を:(覚えていますか死んでいる – Default

7

は、XAMLのセットがスタイルテンプレートのアプリケーションで使用されるコントロールに適用さ定義を保持しているのResourceDictionaryを含む各ファイルを単にあります。テーマファイルには、次のようになります。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"> 

    <!-- 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> 

サポートが明示的にアセンブリに次の属性を追加することで有効にする必要があります

[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> 
+0

「良いサンプル」のリンクはそれを指摘して –

+0

@SvenHechtのおかげで死んでいる私は死んでリンク参照を削除しました。 。 –