Anahtar, PreviewMouseRightButtonDown olayını doğru yere ayarlıyor. Fark edeceğiniz gibi, bir ContextMenu sağ tıklatmadan bir ListViewItem öğesine tıklamak bile bu öğeyi seçecektir ve bu yüzden ListView'de değil, her bir öğede olayı ayarlamanız gerekir.
private void OnListViewItemPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
Trace.WriteLine("Preview MouseRightButtonDown");
e.Handled = true;
}
önizleme olayları tunneling bu seçilmiş olması onları engelleyen ListViewItems üzerinde meydana gelen RightMouseButtonDown engelleyebilirsiniz ancak ListView üzerinde RightMouseButtonDown önlemek ve böylece hala izin vermez olduğundan
<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>
ContextMenu açmak için.
evet bu tam olarak ne gerekli olduğunu. Mükemmel çalışıyor. Teşekkürler! – KevinDeus