繁体   English   中英

为什么从 App.xaml 设置样式 TargetType="Window" 不起作用?

[英]Why does style TargetType="Window" not work when set from App.xaml?

我正在 VS2013 中创建一个简单的 WPF 项目,我想将属性应用于我的主要 Window。 我将它们设置在我的App.xaml文件中,如下所示:

<Application.Resources>
    <Style TargetType="Window">
        <Setter Property="Background" Value="#FF2D2D30" />
    </Style>
</Application.Resources>

问题是什么都没有发生。 然而,当我将TargetType更改为 Grid 时,setter 属性工作得很好。 为什么会这样?

有必要在Window添加构造:

Style="{StaticResource {x:Type Window}}"

XAML中的Window

<Window x:Class="WindowStyleHelp.MainWindow"
        Style="{StaticResource {x:Type Window}}"
        ...>

或者在资源中定义Style ,如下所示:

xmlns:local="clr-namespace:MyWpfApplication"

<Application.Resources>
    <Style TargetType="{x:Type local:MainWindow}">
        <Setter Property="Background" Value="#FF2D2D30"/>
    </Style>
</Application.Resources>

回答这个问题“为什么它不起作用”。

Target类型未应用于Window的原因是,您使用的是名为“MainWindow”的窗口的派生类型。 因此,在您的样式资源中,您必须将目标类型设置为派生类型(MainWindow)。 通过这样做,它将仅应用于“MainWindow”窗口。

<Style  TargetType="local:MainWindow">
    <Setter Property="Background" Value="#FF2D2D30" />
</Style>

您可以将 TargetType 设置为“MainWindow”或为 Style 属性设置资源引用。

public MainWindow()
{
    InitializeComponent();
    SetResourceReference(StyleProperty, typeof(Window));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM