Xaml学习小结

huuhghhgyg avatar
  • huuhghhgyg
  • 1 min read

主要是Xaml的“绑定”和“资源”

Xaml静态资源绑定

需要绑定一个resource的时候,需要的表达式就是大括号里面有“StaticResource”,再加上resource的名字。这种绑定只在App运行的时候进行一次,因为是静态资源,所以它就不会变了。 如:

1<TextBlock Foreground = "{StaticResource MyBrush}" />

StaticResource表明了我们所绑定的资源的类型

单个属性的绑定

可以创建单个属性的资源绑定,如:

1<Page.Resources>
2    <SolidColorBrush x:Key="MyBrush" Color="Brown"/>
3</Page.Resources>
4
5<!-- 使用 -->
6<TextBlock Text="Hello World" Foreground="{StaticResource MyBrush}"/>

还可以创建值绑定,如将Slider的值绑定到ProgessBar中:

1<ProgressBar Maximum="100" Value="{x:Bind MySlider.Value, Mode=OneWay}">

多个属性的绑定(Style)

也可以创建多个值类型的绑定,如设置背景、字体、字号等属性,如:

 1<Page.Resources>
 2    <Style TargetType="Button" x:Key="MyButtonStyle">
 3    <!-- 定义了目标类型、样式(资源)名称 -->
 4    <!-- 下面是各个属性值的设置 -->
 5        <Setter Property="Background" Value="Blue"/>
 6        <Setter Property="FontFamily" Value="Arial Black"/>
 7        <Setter Property="FontSize" Value="36"/>
 8    </Style>
 9</Page.Resources>
10
11<Button Content="My Button Style Example"
12        Height="100"
13        Style="{StaticResource MyButtonStyle}" />
14        <!-- 资源的名称是“MyButtonStyle” -->

属性的继承

使用BasedOn属性 如HeaderTextBlockStyle就是继承自BaseTextBlockStyle 原文引用:

1<Style x:Key="HeaderTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}">
2    ...
3</Style>

跨页引用资源

如果要跨页引用属性定义,需要在App.xamlApplication.Resources里面添加定义 在App.xaml中添加定义:

1<Application.Resources>
2    <!-- 在这里添加属性的定义 -->
3</Application.Resources>

这样,样式就已经在整个App中定义了。

Resource Dictionary

Application.Resources中设定的Resource Dictionary(资源字典)可以用于设置

  • Resources
  • SolidColorBrush
  • Strings
  • Styles
  • StaticResource
  • Control Templates
  • Animation

不仅在PageApplication层面可以创建Resource Dictionary,还可以创建名为Merged Resource Dictionary,用于在多个文件中定义Resource Dictionary,以此降低程序的复杂性,并允许在不同的项目中重复使用Dictionary文档。 比如,在项目中创建一个Dictionary1.xaml文件(ResourceDictionary类型),内容如下:

1<ResourceDictionary
2    xmlns=""
3    ...>
4    <x:String x:Key="greeting">Hello World</x:String>
5<ResourceDictionary/>

在其它文件中的引用(以Page为例):

1<Page.Resources>
2    <ResourceDictionary>
3        <ResourceDictionary.MergedDictionaries>
4            <!-- 可以合并多个Dictionary入这个文件,只需要向里面添加 -->
5            <ResourceDicitonary Source="Dictionary1.xaml">
6        <ResourceDictionary.MergedDictionaries/>
7    <ResourceDictionary/>
8<Page.Resources/>

使用系统已经构建好的主题

可以直接在Style="{StaticResource ...}"里面根据IntelliSense查找,或者在控件的属性框内,找到Miscellaneous中的Style,选中System Resource,进行选择。

Xaml非静态资源绑定

ThemeResource

ThemeResource和系统主题有关,使用系统主题中的颜色:

1<!-- 使用系统的主题色 -->
2<Rectangle Fill="{ThemeResource SystemAccentColor}">
3<!-- 使用系统的窗口颜色(亮/暗等) -->
4<Rectangle Fill="{ThemeResource SystemColorWindowColor}">
huuhghhgyg

Writter by : huuhghhgyg

Never Settle

Recommended for You

LINQ笔记&实例

LINQ笔记&实例

正则表达式笔记

正则表达式笔记