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

Avalonia如何设置TextBox仅在回车或失焦时更新视图模型?

在Avalonia中实现TextBox仅回车/失焦时同步视图模型

完全可行,你可以通过调整绑定的更新触发模式,再配合回车事件处理来实现需求:

  • 第一步:设置失焦时自动同步
    Avalonia的TextBox默认使用UpdateSourceTrigger=PropertyChanged(按键即同步),只需把绑定的触发模式改为LostFocus,就能让文本在控件失去焦点时自动同步到视图模型:

    <TextBox Text="{Binding YourTextProperty, UpdateSourceTrigger=LostFocus}" />
    
  • 第二步:处理回车键手动同步
    要实现回车时同步,给TextBox添加KeyDown事件,在事件中判断按下的是回车键时,手动触发绑定源更新:
    先在XAML中绑定事件:

    <TextBox Text="{Binding YourTextProperty, UpdateSourceTrigger=LostFocus}"
             KeyDown="TextBox_OnKeyDown" />
    

    然后在后台代码中实现事件逻辑:

    private void TextBox_OnKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            if (sender is TextBox textBox)
            {
                // 手动触发绑定源更新
                textBox.GetBindingExpression(TextBox.TextProperty)?.UpdateSource();
                // 可选操作:比如按下回车后让控件失去焦点,或者清空输入
                textBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }
    }
    

如果你的项目采用纯MVVM模式不想写后台代码,也可以用KeyBinding把回车键绑定到视图模型的命令,在命令中直接更新对应属性,效果是一样的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:29:55