开发手册 欢迎您!
软件开发者资料库

XAML - 模板

XAML模板 - 从简单和简单的步骤学习XAML,从基本到高级概念,包括概述,环境设置,在MAC OS上编写XAML应用程序,XAML与CSharp代码,XAML Vs.VB.NET,构建块,控件,布局,事件处理,数据绑定,标记扩展,依赖属性,资源,模板,样式,触发器,调试,自定义控件。

模板描述控件的整体外观和视觉外观.对于每个控件,都有一个与之关联的默认模板,它为该控件提供外观.

在XAML中,当您想要自定义视觉行为时,可以轻松创建自己的模板.对照的视觉外观.逻辑和模板之间的连接可以通过数据绑定来实现.

样式和模板之间的主要区别是 :

  • 样式只能使用该控件的默认属性更改控件的外观.

  • 使用模板,您可以访问控件的更多部分而不是样式.您还可以指定控件的现有行为和新行为.

最常用的模板有两种类型.

  • 控制模板

  • 数据模板

控制模板

控制模板定义或指定控件的可视外观和结构.所有UI元素都具有某种外观和行为,例如,Button具有外观和行为.单击事件或鼠标悬停事件是响应单击和悬停而触发的行为,并且还有一个默认的按钮外观,可以通过控制模板进行更改.

让我们再看一个简单的例子,其中创建了两个带有一些属性的按钮.一个是模板,另一个是默认按钮.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

当编译并执行上述代码时,它将产生以下MainWindow :

控制模板

当您将鼠标悬停在具有自定义模板的按钮上时,它也会更改颜色,如下所示 :

Control Template1

数据模板

数据模板定义并指定数据集合的外观和结构.它提供了在任何UI元素上格式化和定义数据表示的灵活性.它主要用于与数据相关的Item控件,如ComboBox,ListBox等.

让我们看一个简单的数据模板示例.以下XAML代码使用数据模板和文本块创建组合框.

                                                                                                                                                                             

这是C#中的实现,其中employee对象被分配给DataContext :

using System; using System.Windows; using System.Windows.Controls;namespace XAMLDataTemplate {    ///        /// Interaction logic for MainWindow.xaml    ///     public partial class MainWindow : Window {      public MainWindow() {         InitializeComponent();          DataContext = Employee.GetEmployees();       }   } }

以下是C#中Employee类的实现 :

using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks;namespace XAMLDataTemplate {    public class Employee : INotifyPropertyChanged {      private string name; public string Name {         get { return name; }          set { name = value; RaiseProperChanged(); }       }      private string title; public string Title {          get { return title; }          set { title = value; RaiseProperChanged(); }       }      public static Employee GetEmployee() {         var emp = new Employee() {             Name = "Waqas", Title = "Software Engineer" };         return emp;       }      public event PropertyChangedEventHandler PropertyChanged;      private void RaiseProperChanged( [CallerMemberName] string caller = ""){         if (PropertyChanged != null) {             PropertyChanged(this, new PropertyChangedEventArgs(caller));          }       }      public static ObservableCollection GetEmployees() {         var employees = new ObservableCollection();         employees.Add(new Employee() { Name = "Ali", Title = "Developer" });          employees.Add(new Employee() { Name = "Ahmed", Title = "Programmer" });         employees.Add(new Employee() { Name = "Amjad", Title = "Desiner" });         employees.Add(new Employee() { Name = "Waqas", Title = "Programmer" });          employees.Add(new Employee() { Name = "Bilal", Title = "Engineer" });         employees.Add(new Employee() { Name = "Waqar", Title = "Manager" });          return employees;       }   } }

编译并执行上述代码时,它将产生以下输出.它包含一个组合框,当你点击组合框时,你会看到在Employee类中创建的数据集合被列为组合框项.

数据模板

我们建议您执行上面的代码并进行实验.

51.la/js-sdk-pro.min.js">