Tengo un elemento de menú cuyo ItemsSource está enlazado a una simple lista de cadenas, se muestra correctamente, pero estoy luchando para ver cómo puedo manejar los eventos de clic ¡para ellos!Cómo manejo los eventos de clic en un menú de datos enlazados en WPF
Aquí es una aplicación sencilla que demuestra que:
<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?!");
}
}
}
Muchas gracias!
Chris.
Esto todavía podría conducir a un controlador central, que conecta el valor SomeProperty. ¿no? – Gishu
Sí, eso es correcto. En realidad, el parámetro no es obligatorio. En su lugar, podría realizar una bifurcación basada en la instancia de MenuItem, pero he descubierto que a menudo hay un dato específico para cada elemento del menú que se requiere. p.ej. considere elementos recientes del menú de archivos. La información importante es la ruta del archivo. –
Cuando pruebo esto, el comando se dispara con los botones izquierdo y derecho del mouse. ¿Cómo determinar qué botón se presionó en el comando? – keft