【发布时间】: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。
【问题讨论】:
-
显示一些代码,例如你如何初始化虚拟机,你如何导航到主屏幕等等。