WPF 入门教程数据绑定(二)

本文深入探讨WPF中的数据绑定,包括TextBox的UpdateSourceTrigger属性影响,以及如何响应列表数据源和数据对象的变更。通过示例说明,解释了ObservableCollection和INotifyPropertyChanged接口在实现双向数据绑定中的关键作用,确保UI实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一篇文章中,我们看到了 TextBox 中的更改如何不会立即发送回源。相反,只有在 TextBox 上失去焦点后才更新源。此行为由名为UpdateSourceTrigger的绑定上的属性控制。它默认为值“默认”,这基本上意味着根据您绑定到的属性更新源。在撰写本文时,除了 Text 属性之外的所有属性都会在属性更改时更新 (PropertyChanged),而 Text 属性会在失去对目标元素的关注时更新 (LostFocus)。

显然,默认值是 UpdateSourceTrigger 的默认值。其他选项是PropertyChangedLostFocus和 Explicit。前两个已经描述过,而最后一个只是意味着更新必须手动推送才能发生,使用对 Binding 的 UpdateSource 调用。

为了了解所有这些选项是如何工作的,我更新了上一章的示例以向您展示所有这些选项:

<Window x:Class="WpfTutorialSamples.DataBinding.DataContextSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DataContextSample" Height="130" Width="310">
	<StackPanel Margin="15">
		<WrapPanel>
			<TextBlock Text="Window title:  " />
			<TextBox Name="txtWindowTitle" Text="{Binding Title, UpdateSourceTrigger=Explicit}" Width="150" />
			<Button Name="btnUpdateSource" Click="btnUpdateSource_Click" Margin="5,0" Padding="5,0">*</Button>
		</WrapPanel>
		<WrapPanel Margin="0,10,0,0">
			<TextBlock Text="Window dimensions: " />
			<TextBox Text="{Binding Width, UpdateSourceTrigger=LostFocus}" Width="50" />
			<TextBlock Text=" x " />
			<TextBox Text="{Binding Height, UpdateSourceTrigger=PropertyChanged}" Width="50" />
		</WrapPanel>
	</StackPanel>
</Window>
using System;
using System.Windows;
using System.Windows.Controls;
usi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值