Der Schlüssel setzt das PreviewMouseRightButtonDown-Ereignis an der richtigen Stelle. Wie Sie sehen werden, wird auch ohne ContextMenu ein Rechtsklick auf ein ListViewItem dieses Element auswählen. Daher müssen wir das Ereignis für jedes Element und nicht für die ListView festlegen.
<ListView>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<EventSetter Event="PreviewMouseRightButtonDown"
Handler="OnListViewItemPreviewMouseRightButtonDown" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Menu Item">Item 1</MenuItem>
<MenuItem Header="Menu Item">Item 2</MenuItem>
</ContextMenu>
</ListView.ContextMenu>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
</ListView>
private void OnListViewItemPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
Trace.WriteLine("Preview MouseRightButtonDown");
e.Handled = true;
}
Da die Vorschau Ereignisse sind tunneling dies die RightMouseButtonDown von dem Auftreten auf dem Listviewitem blockiert sie daran gehindert wird, ausgewählt zu werden, aber nicht die RightMouseButtonDown auf dem Listview verhindern und so immer noch erlauben, die ContextMenu zu öffnen.
ja das ist genau das, was ich brauchte. Es funktioniert perfekt. Vielen Dank! – KevinDeus