2013-11-28 2 views
1

Попытка добавить контекстное меню к TreeView с помощью всего лишь кода xaml.Добавление контекстного меню в древовидное представление только XAML

  • Tv Show
    • Сезон 1
    • Сезон п

контекстное меню должно показать только тогда, когда я правой кнопкой мыши узел Сезон.

Возможно ли это? Я знаю, как решить эту проблему с помощью кода, но я хотел бы научиться использовать WPF, поскольку он предназначен. У меня проблемы с выяснением, могу ли я решить эту проблему, используя только xaml.

Текущий XAML:

<TreeView 
     Grid.Row="1" 
     Grid.Column="0" 
     ItemsSource="{Binding TvShows}" x:Name="TvShowsTreeView" 
     SelectedItemChanged="TvShowsTreeViewOnSelectedItemChanged"> 

     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate DataType="tvShows:TvShow" ItemsSource="{Binding Seasons}"> 
       <TextBlock Text="{Binding Name}" /> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 
+0

Как вы строите дерево? с помощью 'HierarchicalDataTemplate'? разместите свой текущий XAML. –

+0

@HighCore, добавлено xaml. Также попробуйте «попробовать» с контекстным меню, но это пока не привело к чему-то еще, поэтому я оставил его сейчас, надеясь на что-то, что имеет смысл с SO :) – bas

ответ

3

Попробуйте использовать ItemTemplate свойство HierarchicalDataTemplate. Он должен выглядеть следующим образом:

<HierarchicalDataTemplate DataType="tvShows:TvShow" ItemsSource="{Binding Seasons}"> 
     <TextBlock Text="{Binding Name}" /> 
     <HierarchicalDataTemplate.ItemTemplate> 
      <DataTemplate DataType="TypeOfSeasonInYourApplication"> 
       <TextBlock Text="{Binding Name}"> 
        <TextBlock.ContextMenu> 
         <ContextMenu> 
          <!-- Place MenuItems here --> 
         </ContextMenu> 
        </TextBlock.ContextMenu> 
       </TextBlock> 
      </DataTemplate> 
     </HierarchicalDataTemplate.ItemTemplate> 
    </HierarchicalDataTemplate> 

Я на самом деле не проверял, что я так, пожалуйста, дайте мне знать, если это работает или нет.

+0

Нет, не совсем: Property 'VisualTree' не поддерживает значения типа «DataTemplate». – bas

+2

Хм, странно, что раньше работало в моем случае. В сообщении об ошибке, которое вы написали, я могу только посоветовать вам удвоить, если вы поместили 'DataTemplate' в свойство' ItemTemplate', а не в 'HierarchicalDataTemplate' (это не сработает наверняка). – Sergey

+0

Черт побери! Это был хороший совет! Благодаря! – bas

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