2010-06-01 3 views
0

Если я обрабатываю событие PreviewMouseDown на TreeViewItem, я получаю события для всего, на что я нажимаю, этот TreeViewItem включает в себя маленький +/- поле слева (Windows XP). Как я могу это отличить?WPF TreeView PreviewMouseDown on TreeViewItem

Я попытался следующие:

// We've had a single click on a tree view item 
// Unfortunately this is the WHOLE tree item, including the +/- 
// symbol to the left. The tree doesn't do a selection, so we 
// have to filter this out... 
MouseDevice device = e.Device as MouseDevice; 

// This is bad. The whole point of WPF is for the code 
// not to know what the UI has - yet here we are testing for 
// it as a workaround. Sigh... 

// This is broken - if you click on the +/- on a item, it shouldn't 
// go on to be processed by OnTreeSingleClick... ho hum! 
if (device.DirectlyOver.GetType() != typeof(Path)) 
{ 
    OnTreeSingleClick(sender); 
} 

То, что я после того, как только один щелчок на элементе дерева просмотра исключая дополнительные биты, кажется, включают в себя.

ответ

0

Мое решение заключается в использовании события SelectionItemChanged, похоже, чтобы избежать проблем с кнопкой +/-.

0

Если я правильно понял, e.OriginalSource должен содержать элемент управления Фактически нажал. Убедитесь, что это TextBlock (или что-то еще в вашем TreeView). Вы также можете использовать что-то вроде this post, чтобы определить, к какому TreeViewItem принадлежит OriginalSource, если вы параноик.

+0

Что я ищу - это средство для обнаружения, если я нажал кнопку +/- слева от TreeViewItem. То, что я вижу, - это граница или путь. К сожалению, если вы нажмете на текстовый блок, расположенный за пределами текстового блока, вы получите Border. Поэтому я не могу различать щелчок на TreeViewItem или +/-. Единственная уникальная вещь, которую я вижу, это Path. Однако, если я использую элемент Path внутри TreeViewItem, как мне рассказать об этом отдельно? – imekon

+0

Возможно ли установить свойство Tag для всего, что вы помещаете в качестве «содержимого» TreeViewItem, чтобы отличить его от чего-то еще? – JustABill

Смежные вопросы