2009-07-02 37 views
9

böylece bir wpf liste görünümüne bir içerik menüsü (sağ tıklama menüsü) ekledim.wpf liste görünümü sağ tıklatma sorunu

Maalesef, sağ tıklattığınızda, hem menüyü getirir hem de seçmiş olduğunuz öğe ne olursa olsun seçer. İçerik menüsüne hala izin verirken bu sağ tıklama seçme davranışını kapatmanın bir yolu var mı?

cevap

18

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.

+0

evet bu tam olarak ne gerekli olduğunu. Mükemmel çalışıyor. Teşekkürler! – KevinDeus

İlgili konular