gpt4 book ai didi

wpf - MEF 组件上的 ShowDialog 仅工作一次

转载 作者:行者123 更新时间:2023-12-01 02:56:02 25 4
gpt4 key购买 nike

我创建了一个 WPF 窗口并将其设为 MEF 导出。

我可以在 MEF 导入上执行一次 ShowDialog,但第二次它中止,因为 MEF 组件已被第一个 ShowDialog 关闭。

可以做些什么来允许重复 ShowDialog?

最佳答案

当您像这样在 WPF 窗口上两次调用 ShowDialog 时:

var window = new Window();
window.ShowDialog(); // returns when user closes first window
window.ShowDialog(); // throws

你会得到一个 InvalidOperationException这条消息:

Cannot set Visibility or call Show or ShowDialog after window has closed.



要解决此问题,您需要每次都重新创建窗口,例如像这样:
var window = new Window();
window.ShowDialog();
window = new Window();
window.ShowDialog();

MEF 中执行此操作,您可以导出一个单独的 Controller 组件,该组件负责创建并显示您的对话框(而不是直接导出您的对话框):
[Export]
public class MyDialogController
{
public void ShowMyDialog()
{
using (var myDialog = new MyDialog())
{
myDialog.ShowDialog();
}
}
}

关于wpf - MEF 组件上的 ShowDialog 仅工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2943150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com