web-dev-qa-db-ja.com

WPF-グローバルスタイル?

WPFアプリケーションのグローバルスタイルを設定する方法はありますか?

私がやりたいのは、Imageの子を持つすべてのボタンにスタイルを適用することです。

23
Sonny Boy

そうですね、これはすべてを網羅したアプローチです。次の要素をApp.xamlに配置します。すべてのボタンが変更されます(スタイルを手動で適用するボタンを除く)。

<Style TargetType="{x:Type Button}">
    <Setter Property="Background" Value="LightPink"/> <!-- You should notice that one... -->
</Style>

ただし、画像付きのボタンのみを押したい場合は、毎回Buttonから継承し、次のようなスタイルを適用する必要があります。

public class CustomImageButton:Button{}
<Style TargetType="{x:Type local:CustomImageButton}">
    <Setter Property="Background" Value="LimeGreen"/>
</Style>
<local:CustomImageButton Content="ClickMe"/>

これは非常に粗いグローバルスタイリングであり、それを機能させるには規則に従う必要があります。

別の方法は、テーマを使用することです-それについてもっと読む ここ

28
Goblin

タイプごとに適用される暗黙的なスタイルをWPFで実行できます

例えば

<Style TargetType="Button">

そのスタイルのスコープ内のすべてのボタンに適用されます(スタイルがApp.XAMLにある場合はすべてのボタンに適用され、チェーンの下位にある場合はその下のすべてのボタンに適用されます)

特定のタイプのボタン(たとえば、imagebuttons)にのみ適用する場合は、ボタンから派生したタイプ(ImageButtonと呼びます)を作成してから、そのタイプをターゲットとするスタイルを作成します。

5
Brad Cunningham

App.xaml内のResourceDictionaryタグにスタイルを配置すると、アプリ全体に適用されます。

3
samkass