为了在使用模型- 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/