使用Silverlight Prism创建对话框

时间:2010-10-21 20:10:50

标签: prism

我是创建Silverlight应用程序的新手。我继承了一个代码库,我被告知使用的是Prism。根据我在代码库中看到的情况,这看起来是真的。我的问题是,我只是想打开一个对话框窗口并关闭一个对话窗口。

要打开对话框窗口,我正在使用以下内容:

  UserControl myDialog = new MyDialog();

  IRegion region = myRegionManager.Regions["DIALOG_AREA"];
  IRegionManager popupRegionManager = region.Add(myDialog, null, true);
  region.Activate(myDialog);

出现了我设计的对话框。它有两个按钮:“确定”和“取消”。当用户单击这些对话框时,我想关闭对话框。我的问题是,我不知道该怎么做。因为对话框不是ChildWindow,所以我无法调用this.Close()。但是,当我将MyDialog更改为ChildWindow时,它被包含在一些自定义窗口chrome中,我无法弄清楚如何摆脱它。

如何关闭Prism中的对话框?谢谢!

1 个答案:

答案 0 :(得分:0)

您应该将ViewModel调用为调用对话窗口的服务,而不是放在不同的区域。

public MainPageViewModel(IMainPage view,
                            ILoginBox loginBox )
        : base(view)
    {
        this.view = view;
        this.loginBox = loginBox;
}

public interface ILoginBox
{
    void Show();
}

记得使用IOC容器并在ModuleClass上声明:

protected override void RegierTypes()
    {
        base.Container.RegisterType<ILoginBox , LoginBox>();
}

我希望它有所帮助。

如果您仍在寻找示例,请检查: another Stackoverflow sample