wpf - MVVM 和事件

标签 wpf mvvm event-handling

为了在使用模型- View - View 模型模式(又名演示模型)时将代码保持在 View 之外,我可以将命令作为属性公开在 View 模型中,并从 View 绑定(bind)到这些命令。这样,我的 View 可以完全用 XAML 编写,没有代码隐藏,除了对 InitializeComponent() 的强制构造函数调用之外。 .

这适用于实现 ICommandSource 的控件。 .但是,如果我想在文本框的文本发生变化时执行一些操作怎么办?编译器拒绝 XAML,我在其中设置了将不在代码隐藏文件上的处理程序附加到事件。

我可以编写一些在 View 模型中简单地运行命令(或方法)的事件处理程序,如下所示:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    ((EditPersonViewModel) DataContext).ChangeBioCommand.Execute(e.Changes);
}

这行得通,但我不喜欢我必须在我的 View 中编写如此丑陋的样板代码。有更好的解决方案吗?

最佳答案

您可以使用“附加命令行为”模式。 Marlon Grech 有一个很好的实现 here .

关于wpf - MVVM 和事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975683/

相关文章:

android - Kotin lateinit Var 未初始化 - Android Studio

c# - 在 C# 中,如何在接口(interface)中声明 EventHandler 的子类?

wpf - 从代码隐藏添加转换器到页面资源

c# - 以编程方式从资源字典中添加删除项目

c# - 将 ViewModel 绑定(bind)到 Listview 的问题

powershell - 为什么本地定义的变量可以从另一个函数中成功访问?

c++ - 适用于事件管理的设计模式

c# - WPF 中的数据网格 - 1 列默认排序

c# - 将参数从ConfirmNavigationRequest传递到Prism中的NavigationService

c# - 复杂的ViewModel- View 无法根据需要的模型建议自动映射值。