2010-12-11 12 views
6

için Listbox Contextmenu Listem için WPF içinde bir contextmenu istiyorum. Tüm liste kutusu için bir contextmenu ile yaptım, ancak bir öğeyi tıklatmasanız bile contextmenu'yu almak için richt tuşuna basabilirsiniz.C#: Listboxitems (WPF)

Google'da bir şey buldum, ancak bu işe yaramadı. i olmadan yorgun ve diğer şeyler-ama hiçbir şey çalıştı birçok diğer özel derslerde gibi diğer unsurlarla,

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

Ben örnekteki gibi bir TextBlock ile çalıştı:

böyle bir şey denedik. Benim listbox :(

için contextmenu sonra ben böyle bir şey denedim:

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

Ama çok işe yaramadı

birisi :) örnek çalışma/bana bir ipucu verebilir.?

yerine DataTemplate yılında, sen

+0

tam olarak ne çalışmıyor? Daha spesifik olmanız gerekiyor ... Hatalı dosyalar için VS'deki çıkış penceresini kontrol ettiniz mi? –

cevap

13

Ben ListBoxItem 'ın tarzında ContextMenu ayarlarsınız teşekkür:

<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

@Thomas, Command'ı MenuItem'de bir RelayCommand ile bağladım, ancak RalayCommand asla çağrılmıyor. – SubmarineX

+0

@SubmarineX, çıktı penceresinde herhangi bir ciltleme hatası görüyor musunuz? "FrameworkElement öğesini yönetemez ..." gibi bir şey görürseniz, [bu çözümü] inceleyin (http://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to- data-data-text-in-not-devralınmamış /) –

+0

@ThomasLevesque teşekkür ederim, şimdi anladım. ListBoxItem'in datacontext ListBox'ın datacontext'ı olmadığından, ListBoxItem'in datacontext komutunu bağlarım, sonra mesajlaşma yoluyla liste kutusunun datacontextini bilgilendiririm. Ve sonra çözümünüzü göreceğim. – SubmarineX