3 Stimmen

Korrekter Weg zum Erstellen eines Menüs mit Verknüpfungen in WPF

Wie erstellt man am besten ein Menü mit Tastenkombinationen?

Ich möchte einfach ein Dateimenü wie das von Visual Studio, das die Befehle Neu, Öffnen, Speichern, Alles speichern, Beenden und einige andere Standardkurzbefehle enthält.

Es scheint, dass InputGestureText den entsprechenden Text anzeigt, aber da es "Text" genannt wird und scheint nicht Ereignisse auslösen, ich gehe davon ausgehen, dass ist nicht der richtige Weg, es zu tun. Die Command-Architektur scheint auch ziemlich sperrig, so dass ich nicht wollen, Kopf auf diesem Weg, wenn es einen besseren Weg.

Aktualisieren: Der Klarheit halber sei gesagt, dass ich das folgende Menü verwende:

<Menu>
  <MenuItem Header="_File">
    <MenuItem Header="_New" />
    <MenuItem Header="_Open" />
    <Separator />
    <MenuItem Header="_Save" />
    <MenuItem Header="Save _All" />
    <Separator />
    <MenuItem Header="_Export"/>
    <MenuItem Header="_Import"/>
    <Separator />
    <MenuItem Header="E_xit"/>
  </MenuItem>
</Menu>

wo Export und Import benutzerdefinierte Verknüpfungen wären; etwas, das Microsoft nicht in etwas wie ApplicationCommands eingebaut hat. Können Sie bitte eine vollständige Lösung, einschließlich C# benutzerdefinierten Code, wenn nötig? (Das würde nicht nur mir helfen, sondern hoffentlich auch allen anderen, die nach ähnlichen Problemen suchen).

13voto

Josh Punkte 66190

Es ist richtig, dass InputGestureText nicht wirklich eine Verknüpfung einrichtet, sondern sie lediglich im Menü kennzeichnet. Der richtige Weg ist, die InputBindings des Fensters zu verwenden. Sie können jedem Befehl, auch Ihren eigenen modelldefinierten Befehlen, eine Tastenkombination zuordnen. Damit dies funktioniert, müssen Sie jedoch Menüpunkte verwenden, die an Befehle gebunden sind, und nicht direkt deren Klick-Ereignisse verarbeiten. Dies ist die empfohlene Art der Handhabung von Menübefehlen in WPF. Andernfalls müssen Sie auf die altmodische Behandlung von Tastaturereignissen zurückgreifen.

<Window.InputBindings>
  <KeyBinding Key="A" Modifiers="Control" Command="{Binding MyAwesomeCommand}" />
</Window.InputBindings>

Weitere Informationen auf MSDN.

4voto

Gishu Punkte 130442

Werfen Sie einen Blick auf die ApplicationCommands Klasse. Sie erhalten die Standard-Tastengesten (Beschleuniger) und Text kostenlos.

<MenuItem Command="ApplicationCommands.Paste" Width="75" />

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X