9

WPF でカスタム コントロールを作成する場合、現在適用されているテーマ (Aero、Luna、Classic など) に一致するコントロールのスタイルを提供するにはどうすればよいですか?

たとえば、Aero を使用する場合は次のように適用します。

<Style>
    <Setter Property="Background" Value="White"/>
</Style>

ただし、Luna を使用する場合は別のスタイルを適用します。

<Style>
    <Setter Property="Background" Value="#DFDFDF"/>
</Style>

基本テーマを拡張して、新しいコントロールをサポートすることはできますか?

4

2 に答える 2

9

役立つと思われるいくつかのリンク:

http://arbel.net/blog/archive/2006/11/03/Forcing-WPF-to-use-a-specific-Windows-theme.aspx

http://www.browsoft.com/tutorials/DefaultTheme.html

http://blogs.msdn.com/wpfsdk/archive/2007/07/31/using-themes-with-custom-controls.aspx

基本的に、次のような名前のカスタム コントロールのリソース ディクショナリを作成します。

Classic.xaml (“Classic” Windows 9x/2000 look on Windows XP.)
Luna.NormalColor.xaml (Default blue theme on Windows XP.)
Luna.Homestead.xaml (Olive theme on Windows XP.)
Luna.Metallic.xaml (Silver theme on Windows XP.)
Royale.NormalColor.xaml (Default theme on the Windows XP Media Center Edition operating system.)
Aero.NormalColor.xaml (Default theme on the Windows Vista operating system.)

これらのファイルにコントロールのさまざまなスタイルを配置すると、OS の現在のテーマに基づいて読み込まれます。

于 2009-02-12T22:53:20.130 に答える
0

リソース ディクショナリをロード/アンロードすることで、WPF でさまざまなテーマを使用できます。これらの辞書には、コントロールのスタイルが含まれている必要があります。辞書を交換すると、WPF はスタイルをコントロールに適用します。

たとえば、これが WhiteStyle.xaml にあり、それを読み込んだ場合、テキスト ブロックはすべて白色のフォントでテキストを表示します。

<Style TargetType="TextBlock">
    <Setter Property="Foreground" Value="White"/>
</Style>

を含む BlackStyle.xaml に交換した場合

<Style TargetType="TextBlock">
    <Setter Property="Foreground" Value="Black"/>
</Style>

テキストブロックには、テキストが黒色のフォントで表示されます。WPF は多くの詳細を処理します。詳細が何であるかを伝えるだけです。

リソース ディクショナリを交換するのは非常に簡単です。「WPF テーマ」のグーグル検索は、開始するのに適した場所です。

于 2009-02-12T22:24:00.107 に答える