WPF的XAML 资源申明 类似HTML。
整体来说分3种
1.行类资源样式属性
1.1 行内属性
<Button Content="按钮" Foreground="White" FontSize="30"></Button>
1.2 行内样式 模板(没多大意义)
<Button Content="按钮"><Button.Style><Style TargetType="Button"><Setter Property="Foreground" Value="White"></Setter><Setter Property="FontSize" Value="30"></Setter><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Grid></Grid></ControlTemplate></Setter.Value></Setter></Style></Button.Style><Button.Template><ControlTemplate TargetType="Button"><Grid></Grid></ControlTemplate></Button.Template>
</Button>
2.头部资源样式属性
2.1 头部样式模板 (申明)
<Window.Resources><Style x:Key="xxx" TargetType="Button"><Setter Property="Foreground" Value="White"></Setter><Setter Property="FontSize" Value="30"></Setter><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Grid></Grid></ControlTemplate></Setter.Value></Setter></Style><ControlTemplate x:Key="xx" TargetType="Button"><Grid></Grid></ControlTemplate>
</Window.Resources>
2.2 头部样式模板 (引用)
<Window.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="Dictionary.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary>
</Window.Resources>
3.全局资源样式属性
App.xaml
<Application.Resources><ResourceDictionary>
<ResourceDictionary.MergedDictionaries><ResourceDictionary Source="Dictionary.xaml"/></ResourceDictionary.MergedDictionaries>
<Style x:Key="xxx" TargetType="Button"><Setter Property="Foreground" Value="White"></Setter><Setter Property="FontSize" Value="30"></Setter><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Grid></Grid></ControlTemplate></Setter.Value></Setter></Style><ControlTemplate x:Key="xx" TargetType="Button"><Grid></Grid></ControlTemplate></ResourceDictionary></Application.Resources>
!!!!!!!!!!!!!!配合资源字典的使用!!!!!!!!!
说明:
1.行类属性尽量少用,只有特殊控件 需要用到行内属性,
正确的做法是封装统一风格的所有控件。
(例如按钮,统一高宽,字体,字体大小,然后申明到独立的资源字典中,
在App.xaml中引用)
2.头部资源引用情况用于 不同 Window 适应不同主题或者风格的情况。
比如为某一个窗口申明一个当前窗口单独使用的样式。
(例如播放器的旋转控件,只有一个页面用到,只需要在Window级引用对应资源字典)
不放在App.xaml原因是为了降低内存消耗。
3.App.xaml 里面的资源引用适用于全局资源。理论上每一个被申明的Window
都会创建一个对应资源字典的实例。除非是每个Window都会用到的模块,
不然建议放到对应Window级