开发没有MVVM的WPF软件

时间:2012-01-14 17:12:52

标签: wpf mvvm

我们希望开始开发中级桌面软件。 我们决定使用WPF。 我们不想使用MVVM模式。 因为我们不熟悉MVVM,也有时间限制。 在没有MVVM模式的情况下开发WPF应用程序是否属实(使用3层架构但没有MVVM) 虽然它比胜利形式有更好的表现吗?

5 个答案:

答案 0 :(得分:15)

使用wpf时,您不需要依赖MVVM。真正正确使用wpf的关键是:

  • 使用命令代替事件(您可能会在没有意识到的情况下执行此操作,但请检查以确保)
  • 使用数据绑定而不是直接从控件中获取值
  • 设置数据上下文并绑定到该上下文而不是绑定到
  • 后面的代码

MVVM非常适合这两件事但不是必需的。具体来说,MVVM需要3层严格的关注点分离,这可以通过MVP轻松完成。

就性能而言,这实际上取决于运行应用程序的平台和编码风格。如果你在没有合适显卡的计算机上运行它,那么winForms可能会表现更好,因为wpf可能会恢复到软件渲染速度非常慢。如果你需要做3d图形,那么wpf确实是你唯一的选择。

Someone else's recommendation to NOT use MVVM

A codeproject example of how to do MVP with wpf

答案 1 :(得分:2)

使用WPF / Silverlight时,您肯定不必依赖MVVM。

至于性能差异 - 它可能取决于您的编码风格,但如果做得恰当,差异应该不明显。

答案 2 :(得分:2)

您可以通过WinForm和WPF开发任何应用程序,而无需任何设计模式或应用程序模式。

答案 3 :(得分:0)

MVVM不是必需的,但它解决了表示逻辑的一些常见问题。例如,考虑IsBusy ViewModel属性。它是从任何具有持续时间的操作设置的,可以在Command.CanExecute中使用,以指示绑定控件在某些内容运行时自行禁用。逻辑和UI操作的一个属性。您可以考虑更多这样的示例来指导您使用MVVM。它具有重要意义,而不是它自身的模式。

答案 4 :(得分:-3)

不需要使用MVVM。 可以使用视觉设计器将n'拖放控件拖到设计图面上。 双击按钮并在代码隐藏中获取事件处理程序。我们不要忘记 设置属性&通过PropertyGrid的事件处理程序。 完全一样在Winforms中完成。

没有DataContext数据绑定不起作用。 如果你想使用数据绑定,我见过的第一个例子设置了 Window的DataContext = this;在构造函数中。在这种情况下,窗口充当自己的“ViewModel”。

您还可以将MVVM与View-First一起使用。无需DI或IoC。

public class MyViewModel
{
}
public class MyWindow
{
    public MyWindow()
    {
        DataContext = new MyViewModel();
    }
}

当然下一步是使用Unity实现DI / IoC。