卡特尔的窗口导航

时间:2014-08-12 08:17:58

标签: c# wpf mvvm catel

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

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

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

有什么建议吗?

要求的某些代码:

/// <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&#39;查看其他地方生成的ViewModel。

1 个答案:

答案 0 :(得分:1)

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