“服务登录”在WPF MVVM架构中发生在哪里?

时间:2012-07-14 07:18:23

标签: wpf mvvm model

我有一个WPF应用程序,我需要在启动时显示“登录”窗口,然后使用从用户传递的凭据连接到WCF服务。

问题是 - 实际的'client.Open()'在哪里发生?

在ViewModel中还是在Model?

我认为它应该发生在一个单独的类中,但应该由ViewModel或Model调用。

是哪一个?

2 个答案:

答案 0 :(得分:1)

嗨,是的,我完全误解了你的问题,对不起。它就像当用户点击UI上的Login按钮时,对应于那个Button的Command并且调用Login的ViewModel方法进一步调用该方法进一步调用Clientside Service类(Model)方法,该方法进一步调用ServerSide Service类方法,进一步调用BLL方法哪个进一步调用登录的Repository方法。链就像View => VM => ClientSideService => ServerSideService => BLL =>存储库。但是,如果您希望或可以直接从ViewModel调用ServerSide服务,您可以跳过ClientSide服务。“但应该由ViewModel或模型调用?”是他们被称为模型。我希望这将有所帮助

答案 1 :(得分:0)

嗨,如果我没有错误地解释你的问题,你可以这样做

   public partial class App : Application
{
    void App_Startup(object sender, StartupEventArgs e)
    {
        // Application is running
        // Process command line args
        bool startMinimized = false;
        for (int i = 0; i != e.Args.Length; ++i)
        {
            if (e.Args[i] == "/StartMinimized")
            {
                startMinimized = true;
            }
        }

        // Create main application window, starting minimized if specified
        MainWindow mainWindow = new MainWindow();
        if (startMinimized)
        {
            mainWindow.WindowState = WindowState.Minimized;
        }
        mainWindow.Show();
    }
}

并在xaml中绑定应用程序的StartUp事件

<Application

的xmlns = “http://schemas.microsoft.com/winfx/2006/xaml/presentation”   的xmlns:X = “http://schemas.microsoft.com/winfx/2006/xaml”   X:类= “SDKSample.App”   Startup =“App_Startup”/&gt;

这一切都发生在App类中。调用First Main方法然后创建App类的实例,然后调用Run方法关闭App,并且此Run方法触发Application_Startup事件,我希望这会有所帮助。