如何在Excel共享插件中使用对话框

我正在写一个Excel的共享插件。 它添加一个CommandBarButton,当点击打开一个WPF窗口来收集用户的一些信息。

我想保持相同的WPF对话框在内存中,并重用它,以便如果用户再次单击CommandBarButton他们以前的值将仍然在那里。

所以我引用了我的WPF对话框,作为实现Extensibility.IDTExtensibility2的插件对象的私有成员。

我在OnStartupComplete()期间创build了窗口,但由于某种原因,当我运行Excel时,窗口立即打开,即使我从来没有调用ShowDialog(),当我点击CommandBarButton时调用ShowDialog()重新打开窗口,它无法加载。

有谁知道为什么会发生这种情况,正确的方法是什么?

非常感谢您的帮助。

代码更新:

public void OnStartupComplete(ref System.Array custom) { MyDialog dlg = new MyDlg(); //This will open the dialog ?!?! } 

….

  public MyDialog() { InitializeComponent(); Loaded += new RoutedEventHandler(OnLoaded); } 

OnLoaded只是连接一些事件处理程序的button,并设置一些ItemSources。 即使我评论它,它仍然打开窗户。

我已经拿起了一个事实,一旦WPF窗口closures,它不能重新开始,这是devise。 但是为什么在excel插件里面自动打开是一个谜。

我已经能够重现你的问题。 在WPFdevise器中,确保表单的Visibility属性设置为Collapsed 。 如果您将其设置为“ 可见”则会在创build对话框时自动显示