2013-04-17 112 views
0

我想向TreeView添加一個上下文菜單。這可以通過以下代碼來完成:使用HierarchicalDataTemplate將ContextMenu添加到TreeView

<TreeView x:Name="treeView" Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Classes}" 
       commandBehaviors:MouseDoubleClick.Command="{Binding TreeMouseDoubleClick}" 
       commandBehaviors:MouseDoubleClick.CommandParameter="{Binding ElementName=treeView, Path=SelectedItem}" 
       Margin="3,3,3,3" ContextMenu="{Binding ContextMenu, Mode=OneWay}"> 
... 

我的TreeView只有兩個級別。班和學生。

我現在的問題是,我有一個HierarchicalDataTemplate我的TreeView和我只是想顯示文本菜單如果右擊是一類節點上

這看起來像

<HierarchicalDataTemplate DataType="{x:Type Entity:Class}" ItemsSource="{Binding Pupils}"> 
       <Label Content="{Binding Name}"/> 
      </HierarchicalDataTemplate> 
      <DataTemplate DataType="{x:Type Entity:Pupil}"> 
       <Label Margin="0"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 
         <Label Grid.Column="0" Content="{Binding Lastname}" Margin="0"/> 
         <Label Grid.Column="1" Content="{Binding Firstname}" Margin="0"/> 
        </Grid> 
       </Label> 
      </DataTemplate> 

我該如何解決這個問題?

回答

0

我建議添加一個視圖模型來包裝你的類類型,併爲它創建一個ContextMenu屬性。實例化這些視圖模型以包裝每個Class類型,並將HierarchicalDataTemplate中的DataType更改爲新的視圖模型的類型。然後,HierarchicalDataTemplate中的標籤可以綁定到ContextMenu屬性,並且可以從TreeView中刪除ContextMenu綁定。它將顯示在Class對象上,但不顯示在Pupil對象上。

相關問題