我尝试在XAML中为WPF Style
设置Window
。我可以在VS Designer中看到我的更改,但是当我运行应用程序时,它将始终获得默认的Style
。
不工作:
<Style TargetType="Window">
<Setter Property="Background" Value="Red"/>
</Style>
如果我使用密钥Style
并将Style
应用于Window
,那么它就可以了。
工作:
<Style x:Key="window" TargetType="Window">
<Setter Property="Background" Value="Red"/>
</Style>
有任何理由需要Style
为Window
提供密钥吗?
任何人都可以解释一下发生了什么吗?
答案 0 :(得分:1)
有必要在Window
中添加构造:
Style="{StaticResource {x:Type Window}}"
样式位于文件App.xaml
:
<Application x:Class="WindowStyleHelp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<!-- In this case, the key is optional -->
<Style x:Key="{x:Type Window}" TargetType="{x:Type Window}">
<Setter Property="Background" Value="Pink" />
</Style>
</Application.Resources>
</Application>
XAML中的窗口:
<Window x:Class="WindowStyleHelp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Style="{StaticResource {x:Type Window}}"
WindowStartupLocation="CenterScreen">
<Grid>
</Grid>
</Window>
答案 1 :(得分:0)
尝试
<Style TargetType="{x:Type Window}">
<Setter Property="Background" Value="Red"/>
</Style>
答案 2 :(得分:0)
样式中的目标类型不会应用于派生类型。
您可以使用StaticResource
在所有窗口上应用密钥 -
<Application x:Class="WpfApplication4.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication4"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style x:Key="MyStyle" TargetType="Window">
<Setter Property="Background" Value="Red"/>
</Style>
</Application.Resources>
</Application>
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Style="{StaticResource MyStyle}">
OR
在这样的资源中定义style for your type (derived window)
-
<Application x:Class="WpfApplication4.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="{x:Type local:MainWindow}">
<Setter Property="Background" Value="Red"/>
</Style>
</Application.Resources>
</Application>