目录
资源统一设置:对象资源属性/向上搜索:APP、系统资源
参数复用
需求:想和C#代码一样,写一个全局的参数,都能使用。
<!--以下三个命名空间都可以在xaml中使用C#中的属性-->
<!--xmlns:sys="clr-namespace:System;assembly=mscorlib"-->
<!--xmlns:sys="clr-namespace:System;assembly=netstandard"-->
<!--xmlns:sys="clr-namespace:System;assembly=System.Runtime"-->
<Window x:Class="XH.StyleLesson.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:XH.StyleLesson"
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<!--参数定义-->
<sys:Double x:Key="value">120</sys:Double>
<SolidColorBrush x:Key="brush">red</SolidColorBrush>
<Style TargetType="Button" x:Key="btnStyle">
<!--参数使用-->
<Setter Property="Width" Value="{StaticResource value}"/>
<Setter Property="Height" Value="200"/>
<Setter Property="Background" Value="{StaticResource brush}"/>
</Style>
</Window.Resources>
<Grid>
<Button Style="{StaticResource btnStyle}"/>
</Grid>
</Window>
注意:xaml中使用参数时候,数据类型一定要属性需要的数据类型保持一致,否则会报错。
资源的定义
Resources 对象的资源管理
xaml中任何对象都包含Resources资源管理
也是有作用域的,搜索方式是父对象资源的查找
也直接在App.xaml也可以设置
StaticResource 静态资源 逐行扫描 从前往后扫描 找不到就报错
DynamicResource动态资源 先加载完运行完再扫描 找不到不会报错 就是不显示
使用区别:希望资源在运行过程中指定:使用动态;如果固定资源:使用静态。
性能上:首推静态,能用静态不使用动态
使用方式
如果在Style中,需要当前控件下都默认使用的话,就不用设置key,如果是特定的,需要使用key进行绑定。
<Style TargetType="Button" x:Key="btnStyle">
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="200"/>
<Setter Property="Background" Value="{StaticResource brush}"/>
</Style>
<!--绑定即可-->
<Button Style="{StaticResource btnStyle}"/>