none
WPF4のWindowのBackgroundプロパティの指定について RRS feed

  • 質問

  • yss4と申します。色々調べたのですが、よく分からず教えて頂ければ幸いです。

    http://social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/e043bbd6-324e-4478-b884-c3f4465736b4

    を参考に、WPF4(VisualStudio2010)において、Application.xamlに

        <Application.Resources>
            <Style TargetType="Window">
                <Setter Property="Background" Value="{x:Static SystemColors.ControlLightBrush}" />
            </Style>
        </Application.Resources>
    

    のようにWindowに対して色を指定したいのですが、反映されません。例えばプロジェクトを作成時にデフォルトで作成されるMainWindowなど全く編集していない状態でも反映されません。

    ただ、下のようにTargetTypeをMainWindowにすると反映されます。

        <Application.Resources>
            <Style TargetType="my:MainWindow">
                <Setter Property="Background" Value="{x:Static SystemColors.ControlLightBrush}" />
            </Style>
        </Application.Resources>
    

    全てのWindowに対して一括で色を指定することは可能でしょうか?

    よろしくお願いいたします。

    2012年6月13日 8:08

回答

  • If a FrameworkElement does not have an explicitly specified Style, it will always look for a Style resource using its own type as the target type.

    とのことです。

    InitializeComponent()を呼んだあとではStyleプロパティは既に設定されていますので、型で検索されません。

    したがって、やるとすればStyleを上書きしないといけません。

    <Application.Resources>
      <Style x:Key="DefaultWindowStyle" TargetType="{x:Type Window}">
        <Setter Property="Background" Value="{x:Static SystemColors.ControlLightBrush}" />
      </Style>
    </Application.Resources>
    <Window Style="{StaticResource DefaultWindowStyle}">
      ...
    </Window>


    • 編集済み データくん 2012年6月13日 10:48 引用の修正
    • 回答としてマーク yss4 2012年6月14日 0:34
    2012年6月13日 10:44

すべての返信

  • If a FrameworkElement does not have an explicitly specified Style, it will always look for a Style resource using its own type as the target type.

    とのことです。

    InitializeComponent()を呼んだあとではStyleプロパティは既に設定されていますので、型で検索されません。

    したがって、やるとすればStyleを上書きしないといけません。

    <Application.Resources>
      <Style x:Key="DefaultWindowStyle" TargetType="{x:Type Window}">
        <Setter Property="Background" Value="{x:Static SystemColors.ControlLightBrush}" />
      </Style>
    </Application.Resources>
    <Window Style="{StaticResource DefaultWindowStyle}">
      ...
    </Window>


    • 編集済み データくん 2012年6月13日 10:48 引用の修正
    • 回答としてマーク yss4 2012年6月14日 0:34
    2012年6月13日 10:44
  • データくん様 ご回答ありがとうございます。

    おっしゃるやり方でうまく出来ました。

    2012年6月14日 0:34