Ich habe ein MenuItem, das ItemsSource mit einer einfachen Liste von Strings verknüpft, die korrekt angezeigt werden, aber ich habe Probleme mit Klickereignissen umzugehen für Sie!Wie gehe ich mit Klickereignissen in einem Datengebundenen Menü in WPF um?
Hier ist eine einfache Anwendung, die es zeigt:
<Window x:Class="WPFDataBoundMenu.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Menu>
<MenuItem Header="File" Click="MenuItem_Click" />
<MenuItem Header="My Items" ItemsSource="{Binding Path=MyMenuItems}" />
</Menu>
</Grid>
using System.Collections.Generic;
using System.Windows;
namespace WPFDataBoundMenu
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public List<string> MyMenuItems { get; set;}
public Window1()
{
InitializeComponent();
MyMenuItems = new List<string> { "Item 1", "Item 2", "Item 3" };
DataContext = this;
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("how do i handle the other clicks?!");
}
}
}
Vielen Dank!
Chris.
Dies noch zu einem zentralen Handler führen würde, die auf dem SomeProperty Wert schaltet. nicht wahr? – Gishu
Ja, das stimmt. Eigentlich ist der Parameter nicht obligatorisch. Sie könnten stattdessen auch basierend auf der MenuItem-Instanz verzweigen, aber ich habe festgestellt, dass oft für jedes Menüelement spezifische Daten vorhanden sind. z.B. Berücksichtigen Sie die letzten Menüeinträge für Dateien. Die wichtige Information ist der Dateipfad. –
Wenn ich dies teste, wird der Befehl sowohl mit der linken als auch mit der rechten Maustaste ausgelöst. Wie ermittelt man, welche Taste im Befehl gedrückt wurde? – keft