Приложение состоит из основного окна с TabControl и плагинов, каждый из которых помещается на TabItems данного контрола. У каждого плагина есть набор горячих клавиш. Для того, чтобы горячие клавиши работали, плагин должен быть в фокусе. К сожалению, простое переключение вкладок не решает проблему. Что с этим можно сделать? Я повесила на TabControl обработчик события SelectionChanged, в который добавила следующий код:


TabItem item = GlobalContainer.SelectedItem as TabItem;
    if (item == null)
        return;
    if(item.Content != null)
    {
        UIElement element = (item.Content as UIElement);
        Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Input,
        (System.Threading.ThreadStart)delegate
        {
            element.Focus();
        });
    }

Где нашла – сейчас не могу вспомнить, видимо, где-то на StackOverflow. Там еще было написано, что имеет смысл поиграть с приоритетом потока, но у меня работает и так.

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2013 Вино из одуванчиков Suffusion theme by Sayontan Sinha