我正在使用WAF(Wpf Application Framework)创建一个对话框,如ModelView示例应用程序中所示。我试图通过镜像用于放置CreateEmailAccountWizard对话框的代码来建立一个简单的AboutBox。我的“关于”框第一次显示正常,但是当我从菜单中再次调用它时,它会给我以下例外:
窗口关闭后,无法设置可见性或调用Show,ShowDialog或WindowInteropHelper.EnsureHandle。
首先,我不知道这个消息是什么意思。第二,我做错了什么?关闭并重新打开CreateEmailAccountWizard对话框时,示例应用程序不会抛出此异常。我的代码几乎与它相同。任何帮助将不胜感激。
答案 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)