bas
bas

Reputation: 14902

Adding context menu to tree view by XAML only

Trying to add a context menu to a TreeView with just xaml code.

The context menu should only show when I right click a Season node.

Is that possible? I know how to solve it with code behind, but I'd like to learn to use WPF as it is intended. I have trouble finding out if I should be able to solve this with using only xaml.

Current 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>

Upvotes: 1

Views: 1006

Answers (1)

Sergey
Sergey

Reputation: 50

Try using the ItemTemplate property of HierarchicalDataTemplate. It should look like this:

    <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>

I actually didn't test that myself so please let me know if that works or not.

Upvotes: 3

Related Questions