Windows phone 7 使用Mvvm指示灯在Windows Phone中显示自定义登录控件

Windows phone 7 使用Mvvm指示灯在Windows Phone中显示自定义登录控件,windows-phone-7,mvvm-light,Windows Phone 7,Mvvm Light,好的,所以我想做的是在应用程序启动时显示某种登录控件(可能是带有文本框和密码框的UserControl) 在非mvvm的情况下,一种方法是使用PopUp原语控件,将usercontrol添加为子元素,然后退出 在MVVM的情况下,我对如何获得相似的结果感到有点困惑 我已经研究了DialogMessage的消息传递,这对于显示一个典型的MessageBox很好,但是自定义usercontrol呢 任何帮助都会很棒!我似乎在任何地方都找不到这方面的演示代码。在MVVM情况下,当ViewModel请求

好的,所以我想做的是在应用程序启动时显示某种登录控件(可能是带有文本框和密码框的UserControl)

在非mvvm的情况下,一种方法是使用PopUp原语控件,将usercontrol添加为子元素,然后退出

在MVVM的情况下,我对如何获得相似的结果感到有点困惑

我已经研究了DialogMessage的消息传递,这对于显示一个典型的MessageBox很好,但是自定义usercontrol呢


任何帮助都会很棒!我似乎在任何地方都找不到这方面的演示代码。

在MVVM情况下,当ViewModel请求时,您可以使用代理让视图打开对话框

您可以在VM上定义一个委托:

public Func<LoginResult> ShowLoginDialogDelegate;
然后在视图中“连接”委托和方法:

_viewModel = new MyViewModel();
DataContext = _viewModel;
_viewModel.ShowLoginDialogDelegate += ShowLoginDialog;
现在,您可以在ViewModel中使用它,例如,当执行以下命令时:

LoginResult result = ShowLoginDialogDelegate();

一个更简单的答案是通过一个视图状态来控制它的可见性,只需稍加操作,就可以通过数据绑定工作,从而允许视图模型在需要时显示“登录页”状态

我最近刚刚为Silverlight/XNA系列写了这篇文章,您可以查看它

如果SL4 DataEventrigger可用,那么就简单多了

LoginResult result = ShowLoginDialogDelegate();