簡體   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