You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#/UWP:如何让TextBox双向绑定随每次按键实时更新字段

UWP TextBox双向绑定实时更新(按键即同步)解决方案

嘿,这个问题其实挺常见的——UWP里TextBox的双向绑定默认是失去焦点时才更新绑定源(对应UpdateSourceTrigger.LostFocus),所以你才会看到只有离开TextBox后MyField才变化。要实现每按一个键就同步更新,只需要修改绑定的触发时机就行。

直接修改XAML绑定表达式

在你的TextBox绑定里加上UpdateSourceTrigger=PropertyChanged,这会告诉绑定系统:只要TextBox的Text属性一变,就立刻把值同步到绑定的MyField字段里。修改后的代码如下:

<StackPanel Name="MyStackPanel" Margin="10">
    <TextBox Header="MyTextBox:Item1" Text="{Binding MyField, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    <Button Name="MyButton" Content="Next" Click="Next_Item"/>
</StackPanel>

配套的必要设置(别漏了!)

要让双向绑定完全生效,你的MyItem类得实现INotifyPropertyChanged接口,这样当MyField的值从代码里改变时,UI也能同步更新。给你个简单的实现示例:

using System.ComponentModel;
using System.Runtime.CompilerServices;

public class MyItem : INotifyPropertyChanged
{
    private string _myField;

    public string MyField
    {
        get => _myField;
        set
        {
            if (_myField != value)
            {
                _myField = value;
                OnPropertyChanged();
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

另外,别忘了给MyStackPanel设置正确的DataContext,比如在页面的构造函数里:

public MainPage()
{
    InitializeComponent();
    MyStackPanel.DataContext = new MyItem();
}

这样改完之后,你每敲一个字符,MyField就会立刻得到最新的值,不用再等TextBox失去焦点啦!

内容的提问来源于stack exchange,提问作者Bimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:34:31