📅  最后修改于: 2020-11-18 09:55:41             🧑  作者: Mango
模板描述了控件的整体外观和视觉外观。对于每个控件,都有一个与之关联的默认模板,该模板赋予控件外观。在WPF应用程序中,当您要自定义控件的视觉行为和外观时,可以轻松创建自己的模板。
逻辑和模板之间的连通性可以通过数据绑定来实现。样式和模板之间的主要区别如下:
样式只能使用该控件的默认属性来更改该控件的外观。
使用模板,您可以访问控件的更多部分而不是样式。您还可以指定控件的现有行为和新行为。
有两种最常用的模板-
控件模板定义控件的视觉外观。所有UI元素都具有某种外观和行为,例如Button具有外观和行为。单击事件或鼠标悬停事件是响应单击和悬停而触发的行为,并且按钮的默认外观也可以由控件模板更改。
让我们举一个简单的例子。我们将创建两个按钮(一个带有模板,另一个是默认按钮),并使用一些属性对其进行初始化。
当您编译并执行上述代码时,它将显示以下MainWindow。
将鼠标移到带有自定义模板的按钮上时,它将更改其颜色,如下所示。
数据模板定义并指定数据集合的外观和结构。它提供了在任何UI元素上格式化和定义数据表示形式的灵活性。它主要用于与数据相关的Item控件,例如ComboBox,ListBox等。
让我们以一个简单的例子来理解数据模板的概念。创建一个名为WPFDataTemplates的新WPF项目。
在下面的XAML代码中,我们将创建一个数据模板作为资源来保存标签和文本框。还有一个按钮和一个列表框,用于显示数据。
这是C#中的实现,其中将Person对象的列表分配给DataContext,Person类的实现和按钮单击事件。
using System.Collections.Generic;
using System.Windows;
namespace WPFDataTemplates {
public partial class MainWindow : Window {
Person src = new Person { Name = "Ali", Age = 27 };
List people = new List();
public MainWindow() {
InitializeComponent();
people.Add(src);
people.Add(new Person { Name = "Mike", Age = 62 });
people.Add(new Person { Name = "Brian", Age = 12 });
this.DataContext = people;
}
private void Button_Click(object sender, RoutedEventArgs e) {
string message = src.Name + " is " + src.Age;
MessageBox.Show(message);
}
}
public class Person {
private string nameValue;
public string Name {
get { return nameValue; }
set { nameValue = value; }
}
private double ageValue;
public double Age {
get { return ageValue; }
set {
if (value != ageValue) {
ageValue = value;
}
}
}
}
}
当您编译并执行上述代码时,将产生以下窗口。它包含一个列表,并且在列表框中,每个列表框项目都包含在“标签”和“文本”框中显示的Person类对象数据。