TextBox.TextChanged & ICommandSource我正在为WPF UI遵循M-V-VM模式。我想将一个TextBox的TextChanged事件的命令连接到ViewModel类中的命令。我可以构想完成此任务的唯一方法是从TextBox控件继承,并实现ICommandSource。然后,我可以指示要从TextChanged事件中触发该命令。对于看起来如此简单的东西来说,这似乎太多了。 有没有比将TextBox子类化并实现ICommandSource更为简便的方法来将TextChanged事件连接到我的ViewModel类? 首先,您肯定已考虑使用PropertyChanged的UpdateSourceTrigger将双向数据绑定到您的视图模型。这样,每次更改文本时都会调用绑定到的属性的属性设置器? 如果这还不够,那么我将使用"附加行为"解决此问题。在朱利安·多明格斯(Julian Dominguez)的博客中,您将找到一篇有关如何在Silverlight中执行非常相似的操作的文章,该文章应易于适应WPF。 基本上,在静态类(称为TextBoxBehaviours)中,定义一个名为(也许)ICommand类型的TextChangedCommand的附加属性。为该属性连接一个OnPropertyChanged处理程序,并在该处理程序中,检查是否在TextBox上设置了该属性;如果是,则在文本框上的TextChanged事件中添加一个处理程序,该处理程序将调用属性中指定的命令。 然后,假设您的视图模型已分配给View的DataContext,则可以使用它:
使用事件绑定和命令方法可能不是正确的选择。 您可能要考虑对VM中的字符串字段使用数据绑定。这样,您可以从那里对命令或函数进行调用,而无需完全关心UI。
您不仅可以处理TextChanged事件并从那里执行命令吗?
就像您说的那样, 替代方法是创建一个 |