Отображение TreeViewItem над его братьями и сестрами

В моем приложении Silverlight 4 я использую древовидное представление с элементами, определяемыми пользователем. Особенностью этих элементов является то, что они могут отображать панель стека, которая размещается под самим элементом. (Я использую отрицательное поле, чтобы переместить панель стека в желаемое положение.) Проблема в том, что панель стека (или сам элемент древовидного представления в этом отношении) должна быть визуально размещена «над» другими элементами древовидной структуры.

Панель стека отображается только при нажатии кнопки (переключение) в элементе просмотра дерева, поэтому я использовал событие check / uncheck, чтобы изменить Z-значение содержащего заголовка:

// up the Z-Axis of the containing header (a button) 
Button header = VisualTreeEnumeration.FindUpVisualTree<Button>(sender as MultiImageToggleButton);
header.SetValue(Canvas.ZIndexProperty, 1);

Это работает только тогда, когда элемент treeview, на котором должна отображаться панель стека, находится на более низком уровне иерархии. Когда древовидный элемент находится на том же уровне, он не размещается выше.

Кто-нибудь знает, как отобразить элемент treeview выше (относительно ZIndex) другой элемент treeview на том же уровне?

Заранее спасибо,
Фрэнк


person Aaginor    schedule 09.01.2012    source источник


Ответы (1)


Ответ уже заключается в вопросе "... как отобразить элемент дерева выше ..."! Найдите этот элемент дерева и установите ZValue:

TreeViewItem tvi = VisualTreeEnumeration.FindUpVisualTree<TreeViewItem>(sender as MultiImageToggleButton);
tvi.SetValue(Canvas.ZIndexProperty, 1);
person Aaginor    schedule 10.01.2012