Я пишу общий плагин для Excel. Он добавляет CommandBarButton, который при нажатии открывает окно WPF для сбора некоторой информации от пользователя.
Я хотел сохранить тот же диалог WPF в памяти и повторно использовать его, чтобы, если пользователь снова щелкнет CommandBarButton, его прежние значения все еще были там.
Поэтому я сделал ссылку на мой диалог WPF как на личный член моего объекта надстройки, который реализует Extensibility.IDTExtensibility2.
Я создал окно во время OnStartupComplete (), но по какой-то причине, когда я запускаю Excel, окно открывается сразу, хотя я никогда не вызывал ShowDialog () и когда я вызываю ShowDialog (), когда CommandBarButton щелкают, чтобы открыть это окно. не удается загрузить.
Кто-нибудь знает, почему это происходит и как это правильно сделать?
Большое спасибо за любую помощь.
ОБНОВЛЕНИЕ КОДА:
public void OnStartupComplete(ref System.Array custom)
{
MyDialog dlg = new MyDlg(); //This will open the dialog ?!?!
}
....
public MyDialog()
{
InitializeComponent();
Loaded += new RoutedEventHandler(OnLoaded);
}
OnLoaded просто подключает некоторые обработчики событий для кнопок и устанавливает некоторые ItemSources. Даже если я закомментирую это, оно все равно откроет окно.
Я понял, что после закрытия окна WPF его нельзя открыть, и это сделано специально. Но почему он открывается автоматически при создании внутри надстройки Excel, остается загадкой.