Bindung an ein TreeView mit ContextMenu in Xaml

Ich bin ziemlich neu bei Xaml und brauche einige beraten.

Einem TreeView gebunden werden soll einer hierarchischen Objekt-Struktur. Das TreeView sollte ein Kontext-Menü, das spezifisch für jeden Objekttyp.

Ich habe versucht, die folgenden:

<TreeView>
  <TreeView.Resources>
    <DataTemplate x:Key="RoomTemplate">
      <TreeViewItem Header="{Binding Name}">
        <TreeViewItem.ContextMenu>
          <ContextMenu>
            <MenuItem Header="Open" />
            <MenuItem Header="Remove" />
          </ContextMenu>
        </TreeViewItem.ContextMenu>
      </TreeViewItem>
    </DataTemplate>
  </TreeView.Resources>

  <TreeViewItem Header="{Binding Name}" Name="tviRoot" IsExpanded="True" >

  <TreeViewItem Header="Rooms"  
                ItemsSource="{Binding Rooms}"
                ItemTemplate="{StaticResource RoomTemplate}">
    <TreeViewItem.ContextMenu>
      <ContextMenu>
        <MenuItem Header="Add room"></MenuItem>
      </ContextMenu>
    </TreeViewItem.ContextMenu>
  </TreeViewItem>
</TreeViewItem>

Aber mit diesem markup, das Verhalten ist so beabsichtigt, aber die untergeordneten Elemente (die Zimmer) sind eingerückt zu viel.

Sowieso alle bining Proben die ich finden konnte, verwenden TextBlock anstelle von TreeViewItem im DataTemplate, aber die Frage, wie integrieren Sie die ContextMenu gibt.

Schreibe einen Kommentar