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>

测试页.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