j'ai une liste avec différentes catégories d'articles. DataTemplates sont utilisés pour présenter ces objets de la manière appropriée. Je veux avoir différents menus contextuels dans les DataTemplates de ces classes.ContextMenu sur ListBox article avec DataTemplate
Tout fonctionne bien avec la souris, mais en utilisant le clavier, je ne peux pas faire apparaître le menu contextuel.
Ceci est probablement parce que le clavier de mise au point ne figure pas sur le contenu du DataTemplate, mais sur le ListBoxItem.
Comment puis-je obtenir le ListBoxItem de se référer à ContextMenu du contenu?
Exemple de code:
<Window x:Class="WpfApplication8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:WpfApplication8"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type my:Orange}">
<TextBlock>
Orange
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="Peel"/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</DataTemplate>
<DataTemplate DataType="{x:Type my:Apple}">
<TextBlock>
Apple
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="Uncore"/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding Fruits}"/>
</Grid>
</Window>
using System.Windows;
using System.Collections.ObjectModel;
namespace WpfApplication8
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Fruits = new ObservableCollection<Fruit>();
Fruits.Add(new Apple());
Fruits.Add(new Apple());
Fruits.Add(new Orange());
this.DataContext = this;
}
public ObservableCollection<Fruit> Fruits { get; set; }
}
public class Fruit
{
}
public class Apple : Fruit
{
}
public class Orange : Fruit
{
}
}
Un menu contextuel de la zone de liste ouvre au milieu de la zone de liste, non où l'élément sélectionné est. De plus, j'aimerais déclarer les éléments du menu contextuel dans XAML, ce qui rend la mondialisation plus facile que de le mettre dans du code. L'accentuation du clavier est primordiale pour les utilisateurs malvoyants ou les utilisateurs qui, pour d'autres raisons, évitent les souris. – Guge