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