У меня есть объект под названием «TextModel». Я определил для него HierarchicalDataTemplate.Как получить элемент логического дерева, который содержит объект с шаблоном данных
так:
<HierarchicalDataTemplate DataType="{x:Type local:TextModel}"
ItemsSource="{Binding Children}">
<TextBlock x:Name="TextPresenter"
Text="{Binding Text}"
Style="{StaticResource TextModelStyleMouseOver}" />
</HierarchicalDataTemplate>
Этот TextModel содержится в каждом TreeViewItem в моей TreeView. И, в коде, я использовал VisualTreeHelper.HitTest, чтобы получить TreeViewItem, на который я нажал, но это не дает мне TreeViewItem как один из результатов HitTest. Результатами HitTest являются: TextBlock (и Border, Grid и ScrollViewer) - тот, который я определил в HierarchicalDataTemplate.
Я попытался использовать LogicalTreeHelper.GetParent (textBlockFromTheHitTestResults), но он вернул мне нуль.
Спасибо за внимание!
Возвращенных r.VisualHit-s такого же, как я уже говорил ранее: TextBlock и Border, Сетка и ScrollViewer. Но есть что-то интересное: o фактически находит TreeViewItem, но затем HitTestResultCallback, вызванный с r, который является Grid (один из результатов теста на удар, написанный выше). То, что я сделал, это взять o, найденный как TreeViewItem, и сохранить его в локальной переменной, которая будет возвращенным значением метода упаковки этого кода, который вы мне дали. –