📅  最后修改于: 2023-12-03 15:21:17.793000             🧑  作者: Mango
XAML(扩展应用程序标记语言)是一种基于XML的语言,用于在.NET架构下创建用户界面(UI)。使用XAML,开发人员可以将用户界面定义为基于对象的图形树,而不是程序代码。资源在WPF和通用Windows平台应用中扮演重要的角色,它们可以存储和重用UI元素以及其他元素。
在WPF和通用Windows平台应用中,资源是一种具有相关属性的对象,这些属性可以被重用多次。资源是分布在整个应用程序的元素集合中的,可以让开发者在XAML文件中使用简单的标记引用,从而避免样板代码的复制粘贴。
WPF和通用Windows平台应用中有多种类型的资源可用,包括如下:
可以通过样式来定义控件的属性。通常情况下,样式与控件的类型相对应。可以通过style属性或静态资源引用来应用样式,以便在XAML中重用。
模板用于定义控件的视觉结构和外观。模板通常用XAML代码定义,这些代码被应用于包含元素的特定区域。
数据模板符合模板的定义,但是它的作用不是视觉外观的定义,而是为控件提供数据绑定。
复合资源可用于同时定义多个资源,而不是单独定义每个资源。一个较为常见的例子是Combobox控件。
转换器是可以重用的代码块,用于将输入值转换为输出值。
资源可以在XAML中使用多个标记设置。以下是描述如何在XAML中使用各种资源类型的一些示例
<Window.Resources>
<Style x:Key="BlueButton" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Blue"/>
</Style>
</Window.Resources>
<Grid>
<Button Style="{StaticResource BlueButton}" Content="Blue Button"/>
</Grid>
<Window.Resources>
<ControlTemplate x:Key="MyButtonTemplate" TargetType="Button">
<Grid>
<Ellipse Width="100" Height="100" Fill="{TemplateBinding Background}"/>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Window.Resources>
<Grid>
<Button Template="{StaticResource MyButtonTemplate}" Background="Green" Content="My Button"/>
</Grid>
<ListBox ItemsSource="{Binding Users}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Name}" FontSize="20"/>
<TextBlock Grid.Row="1" Text="{Binding Age}" FontSize="14"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Window.Resources>
<converters:DoubleToStringConverter x:Key="DoubleToStringConverter"/>
</Window.Resources>
<Grid>
<Slider Value="{Binding MyProperty, UpdateSourceTrigger=PropertyChanged}" Minimum="0" Maximum="100"/>
<TextBlock Text="{Binding MyProperty, Converter={StaticResource DoubleToStringConverter}}"/>
</Grid>
资源是允许开发者在XAML中重用UI元素的重要工具。WPF和通用Windows平台应用中有不同类型的资源可用,包括样式、模板、数据模板、复合和转换器。通过使用资源,开发者可以一次定义、多次使用UI元素。