WPF& MVVM,正确的做法

时间:2015-06-22 08:00:07

标签: wpf mvvm

所以我正在做我的第一个WPF MVVM应用程序。刚刚学习了MVVM的正确原则,但有一些我不理解的东西......

我已经定义了几个用户控件。 第一个问题是什么更好用,UserControl或DataTemplates来改变MainWindow的内容?

当按下按钮时,如何在“MainWindow.xaml”中进行“绑定”以更改UserControl / DataTemplates? 例如,当按下“下一步”按钮时,主窗口的内容消失,用户控件的内容出现在“MainWindow.xaml”的屏幕上。 也许用“”绑定,禁用它并启用它?

我在DataTemplate A Simple MVVM Example上找到了一些函数。它帮助我实现了一些东西,但我看到一些关于“UserControl”与“DataTemplate”的讨论以及如何做到这一点?所以现在我很困惑:))

1 个答案:

答案 0 :(得分:1)

我最近使用MVVM模式制作了一个WPF应用程序,我做了以下内容:

  • 我有一个' Window',主窗口,在此窗口中加载了所有UserControl。

  • 每个UserControl都有一个不同的Viewmodel,例如a" GeneralSettingsUserControl"有一个GeneralSettingsViewModel用于验证和数据绑定。

  • 每个UserControl都有自己的代码隐藏,其中数据绑定到其ViewModel

  • 我在互联网上找到的以下代码(我不再知道网址),但对我来说,它可以在主窗口中更改de ContentControl。

Switcher.cs:

public static mainWindow mainWindow;
public static void switchPage(UserControl p_objNewPage)
{
    mainWindow.navigate(p_objNewPage);
}

mainWindow.xaml.cs

public void navigate(UserControl nextPage)
{
     PageContent.Children.Clear();
     PageContent.Children.Add(nextPage);
     PageContent.LastChildFill = true;
}

PageContent是主要内容所在的Grid的名称。在每个UserControl中,您可以调用Switcher.switchPage(新的UserControl)来更改窗口的内容。因此,当您单击按钮时,您可以调用此方法。

希望它有所帮助,祝你好运。