我正在获取无法设置可见性或调用Show,ShowDialog Exception

时间:2010-05-10 15:29:03

标签: wpf mvvm

我正在使用WAF(Wpf Application Framework)创建一个对话框,如ModelView示例应用程序中所示。我试图通过镜像用于放置CreateEmailAccountWizard对话框的代码来建立一个简单的AboutBox。我的“关于”框第一次显示正常,但是当我从菜单中再次调用它时,它会给我以下例外:

窗口关闭后,无法设置可见性或调用Show,ShowDialog或WindowInteropHelper.EnsureHandle。

首先,我不知道这个消息是什么意思。第二,我做错了什么?关闭并重新打开CreateEmailAccountWizard对话框时,示例应用程序不会抛出此异常。我的代码几乎与它相同。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:-1)

没关系。找到问题的根源。我正在从MEF创建一个单例,它导致相同的对话框实例运行两次。我通过执行以下操作解决了这个问题:

        var shellView = _container.GetExportedValue<IShellView>();
        _aboutDialogViewModel = _container.GetExportedValue<AboutDialogViewModel>();
        _aboutDialogViewModel.ShowDialog(shellView);

我还必须在类上设置MEF属性,告诉它不要使用单例:

[Export, PartCreationPolicy(CreationPolicy.NonShared)]
public class AboutDialogViewModel : ViewModel<IDialogView>
{
    [ImportingConstructor]
    public AboutDialogViewModel(IDialogView view) : base(view)