0x49D1

0L4g0YDQsNC30YDQsNCx0L7RgtC60LUsINC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7QsiA=

Snippets: Выбор элемента в WPF по правому клику до вывода контекстного меню.


Сходу 2 предложения: менее и более точные =) Методы рассмотрим на примере TreeView.

Менее точный метод

(обработка события onPreviewMouseRightButtonDown, то есть до того, как кнопка мыши посчитается нажатой-запускается обработка):

        private void TreeViewItem_PreviewMouseRightButtonDown( object sender, MouseEventArgs e )
        {
                TreeViewItem item = sender as TreeViewItem;
                if ( item != null )
                {
                        item.Focus( );
                        e.Handled = true;
                }
        }
Более точный метод

(кроме того, что обрабатывается событие превью нажатия правой кнопки-дополнительно проверяется, что клик отработается именно на TreeViewItem, а не на каком-нибудь элементе управления внутри него):

private void OnPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            TreeViewItem treeViewItem = VisualUpwardSearch<TreeViewItem>(e.OriginalSource as DependencyObject) as TreeViewItem;

            if (treeViewItem != null)
            {
                treeViewItem.Focus();
                e.Handled = true;
            }
        }

        static DependencyObject VisualUpwardSearch<T>(DependencyObject source)
        {
            while (source != null && source.GetType() != typeof(T))
                source = VisualTreeHelper.GetParent(source);

            return source;
        }
Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: