[英]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.