gpt4 book ai didi

wpf - TextBox.TextChanged & ICommandSource

转载 作者:行者123 更新时间:2023-12-04 02:43:05 36 4
gpt4 key购买 nike

我正在关注 M-V-VM我的 WPF UI 的模式。我想将文本框的 TextChanged 事件的命令连接到我的 ViewModel 类中的命令。我能想到的完成此任务的唯一方法是从 TextBox 控件继承,并实现 ICommandSource。然后我可以指示从 TextChanged 事件中触发该命令。对于看起来如此简单的事情来说,这似乎是太多的工作。

有没有更简单的方法(比继承 TextBox 并实现 ICommandSource)将 TextChanged 事件连接到我的 ViewModel 类?

最佳答案

首先,您肯定考虑过使用 PropertyChanged 的​​ UpdateSourceTrigger 将双向数据绑定(bind)到您的 View 模型?这样每次更改文本时都会调用您绑定(bind)到的属性的属性 setter ?

如果这还不够,那么我会使用附加行为来解决这个问题。在 Julian Dominguez 的博客上,您会找到 article关于如何在 Silverlight 中做一些非常相似的事情,这应该很容易适应 WPF。

基本上,在一个静态类(称为 TextBoxBehaviours)中,您定义了一个名为(可能)ICommand 类型的 TextChangedCommand 的附加属性。为该属性连接一个 OnPropertyChanged 处理程序,并在处理程序中检查该属性是否设置在 TextBox 上;如果是,则向文本框上的 TextChanged 事件添加一个处理程序,该处理程序将调用属性中指定的命令。

然后,假设您的 View 模型已分配给 View 的 DataContext,您可以像这样使用它:

<TextBox
x:Name="MyTextBox"
TextBoxBehaviours.TextChangedCommand="{Binding ViewModelTextChangedCommand}" />

关于wpf - TextBox.TextChanged & ICommandSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55855/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com