代码之家  ›  专栏  ›  技术社区  ›  R. Martinho Fernandes

MVVM与事件

  •  1
  • R. Martinho Fernandes  · 技术社区  · 15 年前

    为了在使用模型视图模型模式(也称为表示模型)时使代码远离视图,我可以在视图模型中将命令作为属性公开,并从视图绑定到这些命令。这样,我的视图就可以完全编写成XAML,除了强制的构造函数调用 InitializeComponent() .

    这对于实现 ICommandSource . 但是,如果我想在文本框的文本发生更改时执行一些操作呢?编译器拒绝我在其中设置的XAML,将不在代码隐藏文件中的处理程序附加到事件。

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

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

    这是可行的,但我不喜欢这样一个事实:我必须在我的视图中编写如此难看的样板代码。有更好的解决方案吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Thomas Levesque    15 年前

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