3

I have a TreeView of items and I want a ContextMenu to pop up only for the second tier items. How do I go about doing that?

4

2 に答える 2

5

あなたがあなたTreeViewをアイテムのリストにバインドしていると仮定しています。もしそうなら、項目の第 1 層と第 2 層は異なるデータ型であるか、または異なる可能性がありますか? HierarchicalDataTemplate次に、次のように、最初の層のタイプとDataTemplate2 番目の層のタイプに対してa を実行できます。

<HierarchicalDataTemplate DataType="{x:Type local:FirstTierType}" ItemsSource="{Binding Items}">
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Name}"  />
    </StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:SecondTierType}">
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Name}"  />
        <StackPanel.ContextMenu>
            <ContextMenu>
               <MenuItem Header="whatever1" Command="whatever1cmd"></MenuItem>
               <MenuItem Header="whatever2" Command="whatever2cmd"></MenuItem>
               <MenuItem Header="whatever3" Command="whatever2cmd"></MenuItem>
            </ContextMenu>
        </StackPanel.ContextMenu>
    </StackPanel>
</DataTemplate>
.
.
.
<TreeView ItemsSource="{Binding Items}" />
于 2013-08-15T03:41:11.030 に答える