2016-06-13 155 views
0

我想在WPF中右鍵單擊ListBoxItems時顯示ContextMenu。我嘗試了下面的代碼,但是ContextMenu顯示ListBoxItems不在那裏。我想要的只是在只有ListBoxItems的右鍵單擊時才顯示ContextMenu。WPF中ListBox的上下文菜單項

<Grid> 
<ListBox x:Name="listofConnectedItems" Grid.Column="0" Grid.Row="0" ItemsSource="{Binding MyItems}" MouseRightButtonDown="listofConnectedItems_MouseRightButtonDown" ContextMenuOpening="listofConnectedItems_ContextMenuOpening" > 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="Padding" Value="10"> 

       </Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 
     <ListBox.ContextMenu> 
      <ContextMenu> 
       <MenuItem Header="_Start" Click="MenuItemStart_Click" /> 
       <MenuItem Header="Sto_p" Click="MenuItemStop_Click" /> 
       <MenuItem Header="_Clear" Click="MenuItemClear_Click" /> 
      </ContextMenu> 
     </ListBox.ContextMenu> 

    </ListBox> 
</Grid> 

` 這裏我附上截圖。 enter image description here 任何人都可以請我通過這個。在此先感謝

+1

你嘗試將它設置在'ItemsContainerStyle'爲'ListBoxItem'而不是整個'ListBox' – dkozl

+0

您現在正在爲整個LB設置CM。 – AnjumSKhan

+0

在ListBoxItem中找不到@AnjumSKhan CM屬性。這就是我問的,如何將CM只放置到ListBoxItems。 – Gopi

回答

0

我認爲問題是,您沒有指定列表框的高度和寬度,所以它automaticaly縮放到窗口大小。所以技術上你的代碼工作正常,但是listbox無處不在。

嘗試用類似

<ListBox x:Name="listofConnectedItems" Grid.Column="0" Grid.Row="0" BorderThickness="5" Width="200" Height="200"... 

,然後右擊列表框外

+0

我說ContextMenu顯示在listboxitems不存在的列表框中。身高不是問題。在運行時我添加listboxitems,所以我沒有指定高度。 – Gopi

1

應該在IntemContainerStyle

<ListBox.ItemContainerStyle> 
    <Style TargetType="ListBoxItem"> 
     <Setter Property="ContextMenu"> 
      <Setter.Value> 
       <ContextMenu> 
        <MenuItem Header="Open" /> 
        <MenuItem Header="Edit" Command="Binding 
       </ContextMenu> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ListBox.ItemContainerStyle>