У меня проблема, с которой я не мог найти решение. Вот XAML моей TreeView в:Контекстное меню TreeView появляется на topnode вместо TreeViewItem
<TreeView ItemsSource="{Binding Parents}" ContextMenu="{StaticResource TreeViewContextMenu}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Image}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
И я также получил этот стиль в моем ContentControl.Resources
:
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="ContextMenu" Value="{StaticResource TreeViewItemContextMenu}" />
</Style>
Когда я щелкните правой кнопкой мыши любой элемент, кроме самого первого, то TreeViewItemContextMenu
появляется, так же, как предназначена. Но проблема заключается в том, когда я правильно нажимаю topnode, вместо этого появляется TreeViewContextMenu
. Я попытался обойтись без TreeViewContextMenu
, но тогда у topnode не было ContextMenu
.
Я был бы очень рад узнать, что и где я пропустил. Заранее спасибо.
Вы можете попробовать на правый клик названии topnode? Я думаю, что ваш заголовок topnode короток. Я вижу, что вы используете StackPanel. Stackpanel stretch TreeViewItem, и вы можете щелкнуть внешний стек. – ebattulga
Я попытался щелкнуть «TextBlock» и «Image» с тем же результатом: если я правильно щелкнул верхний индекс, «ContextMenu», который появляется неправильно, но если я щелкнул правой кнопкой мыши по любому другому узлу (не имеет значения, правильно ли я правка 'или' TextBlock'), результат будет правильным. Это действительно странно для меня. – Sergey