2010-12-11 14 views
6

के लिए लिस्टबॉक्स कॉन्टेक्स्टमेनू मैं WPF में एक सूचीमेनू में अपने लिस्टबॉक्स के लिए चाहता हूं। मैंने इसे पूरे सूची बॉक्स के लिए संदर्भमेनू के साथ किया है, लेकिन यदि आप किसी आइटम पर क्लिक नहीं करते हैं तो भी आप संदर्भमेनू प्राप्त करने के लिए समृद्ध क्लिक कर सकते हैं।सी #: Listboxitems (WPF)

मुझे Google पर कुछ मिला, लेकिन यह काम नहीं कर सका। अन्य ट्यूटोरियल में तरह

<ListBox Margin="5" ItemsSource="{Binding}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"> 
       <TextBlock.ContextMenu> 
        <ContextMenu> 
         <MenuItem Header="{Binding Name}" Click="MenuItemName_Click"/> 
         <MenuItem Header="{Binding Capital}" Click="MenuItemCapital_Click"/> 
         <MenuItem Header="{Binding Population}" Click="MenuItemPopulation_Click"/> 
        </ContextMenu> 
       </TextBlock.ContextMenu> 
      </TextBlock> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

मैं उदाहरण की तरह एक TextBlock के साथ यह कोशिश की, अन्य तत्वों के साथ, मैं बिना थक गया है और यह कई अन्य चीजों लेकिन कुछ भी काम किया:

मैं कुछ इस तरह की कोशिश की। मेरी लिस्टबॉक्स आइटम :(

के लिए कोई ContextMenu बाद में मैं कुछ इस तरह की कोशिश की:

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <ListBoxItem> 
      <ListBoxItem.ContextMenu> 
       <ContextMenu> 
        <MenuItem/> 
       </ContextMenu> 
      </ListBoxItem.ContextMenu> 
     </ListBoxItem> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

लेकिन यह भी काम नहीं किया

किसी ने मुझे एक संकेत उदाहरण काम कर :) दे सकते हैं /।?

धन्यवाद

+0

वास्तव में क्या काम नहीं करता है? आपको और अधिक विशिष्ट होने की आवश्यकता है ... क्या आपने बाध्यकारी त्रुटियों के लिए वीएस में आउटपुट विंडो की जांच की थी? –

उत्तर

13

मैं ListBoxItem की शैली में ContextMenu स्थापित करेगा, बजाय DataTemplate में:

<ListBox Name="simpleListBox" 
     ItemsSource="{Binding SimpleList}" 
     DisplayMemberPath="Name"> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="ContextMenu"> 
       <Setter.Value> 
        <ContextMenu> 
         ... 
        </ContextMenu> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
+0

@ थॉमस, मैं मेनूइटम में रिले कॉमांड के साथ कमांड को बाध्य करता हूं, लेकिन रालेकॉमैंड को कभी नहीं कहा जाता है। – SubmarineX

+0

@SubmarineX, क्या आप आउटपुट विंडो में कोई बाध्यकारी त्रुटियां देख सकते हैं? यदि आपको कुछ ऐसा लगता है जैसे "शासी फ्रेमवर्क एलिमेंट नहीं मिल रहा है ...", [इस समाधान] पर एक नज़र डालें (http://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to- डेटा-कब-द-डाटाकेंटेक्स्ट-विरासत में नहीं है /) –

+0

@ थॉमस लेवेस्क धन्यवाद, अब मुझे मिल गया है। क्योंकि ListBoxItem का डेटाकॉन्टेक्स्ट ListBox का डेटाकॉन्टेक्स्ट नहीं है, इसलिए मैं सूचीबॉक्स Item के डेटाकॉन्टेक्स्ट को कमांड को बाध्य करता हूं, फिर मैसजर के माध्यम से सूची बॉक्स के डेटाकॉन्टेक्स्ट को सूचित करता है। और बाद में मैं आपका समाधान देखूंगा। – SubmarineX