WPF Summary:XAML的介绍

       XAML 是一种声明性标记语言。如同应用于 .NET Framework 编程模型一样,XAML 简化了为 .NET Framework 应用程序创建 UI 的过程。 您可以在声明性 XAML 标记中创建可见的 UI 元素,然后使用代码隐藏文件(通过分部类定义与标记相连接)将 UI 定义与运行时逻辑相分离。 XAML 直接以程序集中定义的一组特定后备类型表示对象的实例化。这与大多数其他标记语言不同,后者通常是与后备类型系统没有此类直接关系的解释语言。 XAML 实现了一个工作流,通过此工作流,各方可以采用不同的工具来处理应用程序的 UI 和逻辑。

 

:以文本表示时,XAML 文件是通常具有 .xaml 扩展名的 XML 文件。 可通过任何 XML 编码对文件进行编码,但通常编码为 UTF-8。

### 实现 WPF 类属性变化自动刷新 XAML 页面 为了使类中的属性发生改变时能够自动刷新XAML界面上的内容,在定义数据模型类时应遵循`INotifyPropertyChanged`接口的要求。每当属性值被修改,应当触发`PropertyChanged`事件来通知UI层进行相应的更新[^3]。 下面展示了一个简单的例子,说明如何创建一个支持属性变更通知的C#类,并将其作为数据上下文用于WPF应用程序中: ```csharp using System.ComponentModel; public class Person : INotifyPropertyChanged { private string _name; public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// Gets or sets the name of this person. /// </summary> public string Name { get => _name; set { if (_name != value) { _name = value; OnPropertyChanged(nameof(Name)); } } } protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } ``` 接着是在XAML文件里设置绑定表达式的部分。通过指定`DataContext`为上述Person实例对象,可以轻松地将控件属性与之关联起来。例如,要让TextBox显示并编辑Name属性,则可以在XAML中这样编写: ```xml <Window x:Class="YourNamespace.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!-- 设置窗口的数据上下文 --> <Window.DataContext> <local:Person/> </Window.DataContext> <StackPanel Orientation="Vertical" Margin="10"> <Label Content="Enter your name:" /> <TextBox Width="200" Height="30" Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> <!-- 显示当前输入的名字 --> <TextBlock FontSize="18" HorizontalAlignment="Center">Hello, my name is <Run Foreground="Blue">{Binding Path=Name}</Run></TextBlock> </StackPanel> </Window> ``` 在这个例子中,`{Binding}`标记扩展用来建立从`TextBox.Text`到`Person.Name`之间的双向绑定关系;而单向绑定则应用于下方的`TextBlock`元素,它仅读取而不允许用户直接修改其内容。当用户在文本框内键入新名字时,由于设置了`UpdateSourceTrigger=PropertyChanged`,每次按键都会立即把最新的字符串传递给背后的`Name`属性,进而触发表达式树重新评估,最终反映在整个视图上[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值