1

Page から派生したカスタム コントロールを作成しました。

namespace The_Toolbox
{
  public class BlancoPageControl : Page
  {
    static BlancoPageControl()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(BlancoPageControl), new FrameworkPropertyMetadata(typeof(BlancoPageControl)));
    }
  }
}

Generic.xaml では、前景色を設定できます。しかし、理由がわかりませんが、背景色を設定できません。

<ResourceDictionary
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:The_Toolbox">
  <Style TargetType="{x:Type local:BlancoPageControl}">
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Background" Value="Violet"/>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:BlancoPageControl}">
                ...
            </ControlTemplate>
        </Setter.Value>
    </Setter>
  </Style>
</ResourceDictionary>

TestPage.xaml:

<local:BlancoPageControl 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:local="clr-namespace:The_Toolbox"
  xmlns:res="clr-namespace:The_Toolbox.LocalResources"
  mc:Ignorable="d"
  x:Class="The_Toolbox.TestPage">
    <StackPanel>
        ....
    </StackPanel>
</local:BlancoPageControl>

ページが紫色になることを期待しますが、色の設定は無視されます。なんで?もちろん、境界線を追加してそこに背景色を追加することもできますが、Page は背景ブラシもサポートしています...

4

0 に答える 0