WPF Summary:XAML标记扩展

XAML标记扩展解析
本文介绍了XAML语言中的标记扩展概念及其用法。通过使用大括号括起来的标记扩展,可以实现特性语法的值传递,例如数据绑定及资源引用等。这种方式允许即使属性本身不支持特性语法,也能为其赋值。

        标记扩展是一个 XAML 语言概念。 当用于提供特性语法的值时,大括号({ 和 })表示标记扩展用法。 此用法指示 XAML 处理系统不要像通常那样将特性值视为一个文本字符串或者可转换为字符串的值。

        WPF 应用程序编程中最常用的标记扩展是 Binding(用于数据绑定表达式)以及资源引用 StaticResourceDynamicResource。通过使用标记扩展,即使属性通常不支持特性语法,也可以使用特性语法为属性提供值。

转载于:https://www.cnblogs.com/HappyNale/archive/2011/03/23/1992868.html

### 实现 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、付费专栏及课程。

余额充值