0

我正在使用具有登录屏幕的 Catel 开发 WPF 应用程序。在用户输入他的详细信息并可以继续之后,我将如何关闭登录屏幕并使用 Catel 显示“主”屏幕?

我尝试使用 IUIVisualizerService,但我无法将用户名传递给它,例如,在要打开的窗口上的视图的视图模型中使用,除非我做错了。

我的应用程序中有其他场景,我需要从当前打开的窗口打开一个新窗口(我可能需要在打开新窗口之前关闭它)并将一些数据传递给包含视图的视图模型。

有什么建议么?

一些代码要求:

/// <summary>
    /// ViewModel for the Login Screen
    /// </summary>
    public class LoginWindowViewModel : ViewModelBase
    {
        public LoginWindowViewModel()
        {
            ShowHomeWindow = new Command(OnShowHomeWindowExecute);
        }

        public string Username { get; set; }

        public override string Title { get { return "Login"; } }

        public Command ShowHomeWindow { get; private set; }

        private void OnShowHomeWindowExecute()
        {
            var viewModel = new HomeWindowViewModel();

            var dependencyResolver = this.GetDependencyResolver();
            var uiVisualizerService = dependencyResolver.Resolve<IUIVisualizerService>();
            uiVisualizerService.Register(typeof(HomeWindowViewModel), typeof(HomeWindow));
            uiVisualizerService.Show(viewModel, OnWindowClosed);
        }

        private void OnWindowClosed(object sender, EventArgs e)
        {

        }

    }

    /// <summary>
    /// ViewModel for the Home Window
    /// </summary>
    public class HomeWindowViewModel : ViewModelBase
    {
        public HomeWindowViewModel()
        {
        }

    }

    /// <summary>
    /// ViewModel for the Home View that sits in Home Window
    /// </summary>
    public class HomeViewModel : ViewModelBase
    {
        public HomeViewModel()
        {

        }

        public string Username { get; set; }

    }

所以需要发生的是,来自 LoginView 的 ViewModel(它是 LoginWindow 上的 UserControl)的用户名必须传递给 HomeView 的 ViewModel(它也是一个 UserControl,位于 HomeWindow)上的用户名。

此代码并不重要,因为这是一个虚构的场景。我试图弄清楚的核心是,当在其他地方生成信息时,如何将信息传递给其他 Windows 的 View 的 ViewModel。

4

1 回答 1

1

请参阅文档的 WPF 入门部分。通常有管理选择/包含应用程序范围状态的服务。然后,您可以在需要时将它们注入到您的视图模型中。

于 2014-08-12T08:52:30.853 回答