【问题标题】:Window Navigation in CatelCatel 中的窗口导航
【发布时间】:2014-08-12 08:17:58
【问题描述】:

我正在使用带有登录屏幕的 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。

【问题讨论】:

  • 显示一些代码,例如你如何初始化虚拟机,你如何导航到主屏幕等等。

标签: c# wpf mvvm catel


【解决方案1】:

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

【讨论】:

  • 谢谢,这似乎是我要找的。​​span>
猜你喜欢
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 2019-11-13
相关资源
最近更新 更多