【发布时间】:2015-05-26 12:33:22
【问题描述】:
我有一个资源字典文件:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TIMS.Common">
<local:ViewModelLocator x:Key="ModelLocator" />
<Style x:Key="DefaultWindowStyle" TargetType="Window">
<Setter Property="Background" Value="Cyan" />
</Style>
<Style x:Key="DefaultPageStyle" TargetType="Page">
<Setter Property="Background" Value="Red" />
</Style>
<Style x:Key="DefaultGroupBoxStyle" TargetType="GroupBox">
<Setter Property="Background" Value="DarkGray" />
</Style>
它被包含在我的 App.XAML 中:
<Application x:Class="TIMS.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TIMS.Common"
StartupUri="Views/MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/TIMS;component/Resources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
但是,除非我在 XAML 中为该对象专门设置了样式,否则此样式不适用。
例子:
<Window x:Class="TIMS.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TIMS.Views"
xmlns:nav="clr-namespace:System.Windows.Navigation;assembly=PresentationCore"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:valueConverters="clr-namespace:TIMS.Utils.ValueConverters;assembly=TIMS.Utils"
x:Name="Main"
Title="Tote Inventory Management System - Southeastern Grocers"
Width="1024"
Style="{StaticResource DefaultWindowStyle}"
Height="768"
DataContext="{Binding MainWindowViewModel,
Source={StaticResource ModelLocator}}">
如何使这些成为默认样式而不必在每个元素上显式设置它们?
【问题讨论】: