首先,您肯定考虑过使用 PropertyChanged 的 UpdateSourceTrigger 将双向数据绑定到您的视图模型?这样每次更改文本时都会调用您绑定到的属性的属性设置器?
如果这还不够,那么我会使用附加行为来解决这个问题。在 Julian Dominguez 的博客上,您会找到一篇关于如何在 Silverlight 中执行非常相似的操作的文章,该文章应该很容易适应 WPF。
基本上,在一个静态类(称为 TextBoxBehaviours)中,您定义了一个名为(可能)ICommand 类型的 TextChangedCommand 的附加属性。为该属性连接一个 OnPropertyChanged 处理程序,并在处理程序中检查该属性是否设置在 TextBox 上;如果是,则向文本框上的 TextChanged 事件添加一个处理程序,该处理程序将调用属性中指定的命令。
然后,假设您的视图模型已分配给视图的 DataContext,您可以像这样使用它:
<TextBox
x:Name="MyTextBox"
TextBoxBehaviours.TextChangedCommand="{Binding ViewModelTextChangedCommand}" />