最推荐使用数据绑定(Binding)获取TextBox文本,即在ViewModel中定义可通知属性并在XAML中用{Binding Path=YourProperty, Mode=TwoWay}绑定到Text属性;手动读取Text属性适用于临时校验等简单场景;TextChanged事件仅用于实时响应输入且需避免修改Text引发冲突。

Avalonia 中获取 TextBox 文本,最推荐的方式是用数据绑定(Binding),而不是手动调用 Text 属性取值。 这样更符合 MVVM 模式,也利于测试和状态管理。
使用双向绑定自动同步文本内容
在 ViewModel 中定义一个字符串属性,并在 XAML 中用 {Binding Path=YourProperty, Mode=TwoWay} 绑定到 TextBox 的 Text 属性:
- ViewModel 中确保属性有 getter/setter,并实现
INotifyPropertyChanged(推荐用[ObservableProperty]配合 CommunityToolkit.Mvvm) - XAML 中写法示例:
- 用户输入会自动更新 ViewModel 中的
InputText,无需额外代码读取
需要手动获取时直接访问 Text 属性
如果只是临时读取(比如按钮点击时校验),可在代码后台或命令中直接读:
- 确保 TextBox 已命名,例如:
- 在对应逻辑中写:
string text = MyTextBox.Text; - 注意:该方式绕过绑定,不触发 setter 或验证逻辑,适合简单场景
监听文本变化用 TextChanged 事件(慎用)
如需实时响应输入(如搜索建议),可用 TextChanged 事件,但要注意避免与绑定冲突:
- XAML 中添加:
- 后台方法中通过
sender转换获取当前文本:
var tb = (TextBox)sender;
string current = tb.Text; - 不建议在事件里修改
Text,容易引发循环或 UI 异常
基本上就这些。绑定是首选,手动读取和事件作为补充。用对方式,文本处理不复杂但容易忽略细节。









