使用XAML设置窗口背景颜色
本文关键字:背景 颜色 窗口 设置 XAML 使用 | 更新日期: 2023-09-27 18:04:21
我在WPF中有一个标准的XAML样式的窗口(<窗口…)>
在这个窗口中,我插入了一个资源字典
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/Global.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
在全局。我有以下代码:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Window">
<Setter Property="Background" Value="Red"/>
</Style>
</ResourceDictionary>
没有任何异常。除了它不起作用,当我编译和运行应用程序时,窗口背景显示为默认的白色。但是在Visual Studio的设计器选项卡中,你可以看到窗口的预览,背景色被正确地更改为红色。我不明白。我没有在任何地方插入任何其他可能覆盖窗口背景颜色的样式。所以它是如何可能的,在预览选项卡它工作正确,但当我实际运行的应用程序,它没有?我哪里做错了?
下面是整个窗口代码:
<Window x:Class="Apptest.EditBook"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="EditBook" Height="300" Width="300">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/Global.xaml" />
<ResourceDictionary Source="Style/Controls.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
</Grid>
</Window>
OK…这是因为你的窗口实际上是一个派生自window的类型。
public partial class EditBook : Window { }
目标类型还不能与派生类型一起工作,因此您需要为样式添加一个键,并将其添加到您想要使用…样式的每个窗口
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Window" x:Key="MyWindowStyle">
<Setter Property="Background" Value="Red"/>
</Style>
</ResourceDictionary>
那么你需要在窗口中应用样式…
<Window x:Class="Apptest.EditBook"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="EditBook" Height="300" Width="300" Style="{StaticResource MyWindowStyle}">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/Global.xaml" />
<ResourceDictionary Source="Style/Controls.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
</Grid>
</Window>
希望这有助于…在我看来,没有更好的解决办法。