我正在使用具有登录屏幕的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。
答案 0 :(得分:1)
请参阅文档的getting started with WPF部分。通常,有一些服务可以管理选择/包含应用程序范围的状态。然后,只要您需要,就可以将它们注入到视图模型中。