Frage

Ich habe eine TreeView Setup, so dass jedes TreeViewItem rechten Maustaste im Kontextmenü als Style angewendet wurde. So etwas wie:

<Grid.Resources>
    <ContextMenu x:Key="contextMenu">
         <MenuItem Header="Save"  IsEnabled="{Binding Path=Saveable}"/>
         <MenuItem Header="Copy" IsEnabled="{Binding Path=Copyable}"/>
         <MenuItem Header="Remove" IsEnabled="{Binding Path=Removeable}"/>
    </ContextMenu>
    <Style TargetType="TreeViewItem">
        <Setter Property="ContextMenu" Value="{StaticResource contextMenu}" />
    </Style>
</Grid.Resources>

speicherbar, Kopierbarer und Removeablepapier sind Eigenschaften, die von dem Objekt kommen, die als TreeViewItem verwendet wird.

Was ich suche ist, wenn der Benutzer auf einem MenuItem klickt, wäre es auf der entsprechenden Methode des ausgewählten Objekts klicken. So einen Klick auf den „Speichern“ MenuItem würde object.Save() nennen, „Kopieren“, ruft object.Copy() usw. Aber ich bin nicht sicher, was die Syntax aussehen würde, oder ob die Idee in Bezug auf die typische WPF Stil eigentlich akzeptabel ist. Ich weiß, ich kann gerade einen neuen Event-Handler in dem umfassenden Fenster erstellen, aber ich würde das ausgewählte Element lieber selbst das Ereignis zu behandeln.

Die Gedanken?

Danke!

War es hilfreich?

Lösung

Leider glaube ich nicht, dass es eine automatisierte Möglichkeit, dies zu tun. Die nächste Option wäre ein RoutedUICommand für jedes Element in den ContextMenu einrichten, und dann eine CommandBinding für jeden in der Klasse erstellen. Wenn Sie diejenigen, die TreeViewItem gehen wollen, müssen Sie wahrscheinlich TreeViewItem Unterklasse und die CommandBindings dort einzurichten.

Die einzige Option, die ich dachte, vielleicht wäre zu arbeiten, um eine EventSetter für MenuItem.Click zum TreeViewItem Stil. Aber das hat nicht funktioniert -. Wahrscheinlich, weil die Elemente in der ContextMenu sind in einer anderen visuellen Struktur vom TreeViewItems

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top