2009-07-02 18 views
9

इसलिए मैंने एक wpf listview में एक संदर्भ मेनू (राइट-क्लिक मेनू) संलग्न किया है।wpf listview राइट-क्लिक समस्या

दुर्भाग्य से, जब आप राइट-क्लिक करते हैं तो यह मेनू और दोनों को लाता है जो भी आइटम आप खत्म कर रहे हैं। क्या संदर्भ मेनू को अनुमति देने के दौरान इस राइट-क्लिक का चयन बंद करने का कोई तरीका है?

उत्तर

18

कुंजी सही जगह पर previewMouseRightButtonDown ईवेंट सेट कर रही है। जैसा कि आप देखेंगे, कॉन्टेक्स्टमेनू के बिना भी ListViewItem पर राइट क्लिक करने से उस आइटम का चयन होगा, और इसलिए हमें सूची आइटम पर नहीं, प्रत्येक आइटम पर ईवेंट सेट करने की आवश्यकता है।

<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; 
} 

के बाद से पूर्वावलोकन घटनाओं tunneling इस ListViewItems उन्हें चयनित किए जाने से रोकने पर होने से RightMouseButtonDown को अवरुद्ध कर देगा, लेकिन ListView पर RightMouseButtonDown रोकने नहीं है और इसलिए अभी भी अनुमति देते हैं ContextMenu खोलने के लिए।

+0

हाँ यह मैं वास्तव में क्या जरूरत है। यह पूरी तरह से काम करता है। धन्यवाद! – KevinDeus

संबंधित मुद्दे