Странная ошибка с WPF TabPage и надстройкой - PullRequest
1 голос
/ 23 января 2012

Я только что закончил, выполнив действия, описанные в этой статье MSDN, по созданию надстройки пользовательского интерфейса WPF: http://msdn.microsoft.com/en-us/library/bb909849%28v=vs.90%29.aspx

Код работает, нажатие кнопки вызывает всплывающее окно, вызывает его.Я поместил пользовательский контроль надстройки в элемент вкладки, так как содержимое элемента вкладки:

TabItem tab = new TabItem();
tab.Name = info.AssemblyName.Name;
tab.Header = info.Name;
tab.Content = plug.GetAddInUI();
TabHost.Items.Add(tab); //Add the page to the TabControl

Это работало отлично, как и ожидалось.Однако, когда вы нажимаете кнопку, происходит интересная вещь.Появляется окно сообщения, но затем элемент управления вкладки "зависает".Я не могу переключиться на другие вкладки.Кнопка по-прежнему вызывает окно сообщения, и я могу переместить все окно, чтобы программа не зависла.

Я могу «заставить» элемент управления вкладками исправить себя, войдя в режим прерывания через VS, затем возобновивпрограмма, или сворачивая / восстанавливая окно, т. д.

Я прочитал посты об обработке событий, блокирующих MessageBox, поэтому я изменил Messagebox на Debug.Writeline.Ошибка все еще сохраняется.

Мой код соответствует MSDN почти до буквы, однако, поскольку он довольно длинный, я бы воздержался от публикации всего этого здесь.В то же время я не уверен, какие сегменты актуальны.Если вы скажете мне, какие части отправлять, я сделаю это.

1 Ответ

0 голосов
/ 23 января 2012

Мне удалось решить эту проблему, вызвав метод TabControl.Focus (), когда выбор изменился, например:

private void TabHost_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    TabHost.Focus();
}

Я считаю, что это ошибка в WPF, а не что-либо, что я сделал.

...