WPF: "ApplicationCommands.New" zeigt im Falle von MenuItem eine falsche Quelle an

Ich bin neu in WPF und gehe die Beispiele von Professional WPF in .net 4.5 durch. Im Kapitel Befehle gibt es ein Beispiel, in dem mehrere Steuerelemente denselben Befehl senden können. Ich verwende eine Schaltfläche, ein Kontrollkästchen und ein Menüelement, um den Befehl Neu auszulösen.

Das Problem, mit dem ich konfrontiert bin, ist, dass die Quelle korrekt angezeigt wird, wenn MenuItem zum ersten Mal gedrückt wird. Nachdem ich jedoch auf die Schaltfläche oder das Kontrollkästchen geklickt habe und dann auf MenuItem geklickt habe, wird die Quelle der letzten Schaltfläche oder des Kontrollkästchens angezeigt, je nachdem, welche Taste gedrückt wurde. Ich konnte nicht finden, was mit meinem Code nicht stimmte oder warum dieses Verhalten von MenuItem in WPF angezeigt wird.

Unten ist der Code.

<Window x:Class="WpfApplication1.CommandSample"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="CommandSample" Height="300" Width="300">
  <Window.CommandBindings>
    <CommandBinding Command="New" Executed="CommandBinding_Executed" />
  </Window.CommandBindings>
  <StackPanel>
    <Button Command="New" MaxWidth="80" MaxHeight="30" Content="{x:Static ApplicationCommands.New}" />
    <Menu MaxHeight="30" VerticalAlignment="Top">
      <MenuItem Header="File">
        <MenuItem Command="New"></MenuItem>
      </MenuItem>
    </Menu>
    <CheckBox Command="New"></CheckBox>

  </StackPanel>
</Window>

namespace WpfApplication1 {
  public partial class CommandSample: Window {
    public CommandSample() {
      InitializeComponent();
    }
    private void CommandBinding_Executed(object sender,ExecutedRoutedEventArgs e)
    {
      MessageBox.Show("New Command launched by " + e.Source);
    }
  }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage