簡體   English   中英

Treeview上的上下文菜單未在所選項目上打開

[英]Context menu on Treeview does not open on selected item

我有一個帶有上下文菜單的樹視圖,並且正在使用轉換器對其進行管理。 我不希望菜單在項目上打開,而只希望它在節點上打開。

<BooleanToVisibilityConverter x:Key="VisibilityConverter" />
  <ContextMenu x:Key="AddNew" Name="PopMnu" Visibility="{Binding IsFolder,Converter={StaticResource VisibilityConverter}}">
    <MenuItem Header="New Symbol..." Click="AddSymbolMenu_Click"/>
    <MenuItem Header="New Folder..." Click="NewFolderItem_Click"/>
  </ContextMenu> 

  <Style TargetType="{x:Type TreeViewItem}">
      <Setter Property="ContextMenu" Value="{StaticResource AddNew}"/>
  </Style>

當我右鍵單擊一個項目時,沒有菜單出現,但是現在當我右鍵單擊一個節點時,菜單出現,但是在先前右鍵單擊該項目的位置上。 除非您再次右鍵單擊任何項​​目,否則菜單不會關閉。 有什么幫助嗎?

正如克里希納(Krishna)的評論所建議的那樣,一種解決方案是為文件夾提供一個視圖模型,為項目提供一個視圖模型。

public class Folder : ViewModelBase { }   
public class Item : ViewModelBase { }   

然后,您可以為每個定義一個DataTemplate,一個包含一個上下文菜單,另一個不包含。

 <TreeView Name="SymbolsTreeView" ItemsSource="{Binding Items}">
        <TreeView.Resources>

            <HierarchicalDataTemplate DataType="{x:Type local:Folder}" ItemsSource="{Binding Items}">
                <Grid Background="Red">
                        <Grid.ContextMenu>
                        <ContextMenu>
                        </ContextMenu>
                    </Grid.ContextMenu>
                    <TextBlock Text="{Binding Name}"/>
                </Grid>
            </HierarchicalDataTemplate>

            <DataTemplate DataType="{x:Type local:Item}" >
                <Grid >
                    <TextBlock Text="{Binding Name}"/>
                </Grid>
            </DataTemplate>

        </TreeView.Resources>
    </TreeView>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM