【问题标题】:I'm Getting Cannot set Visibility or call Show, ShowDialog Exception我正在获取无法设置可见性或调用 Show、ShowDialog 异常
【发布时间】:2010-05-10 15:29:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: wpf mvvm


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多