2016-06-13 44 views
0

WPFのListBoxItemsを右クリックしてContextMenuを表示します。私は以下のコードを試しましたが、ContextMenuはListBoxItemsがそこにない場所を表示しています。私が望むのは、ListBoxItemだけを右クリックして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

あなたは 'ListBoxItem'のための' ItemsContainerStyle'でそれを設定してみてくださいましたListBox全体の代わりに – dkozl

+0

LB全体に対してCMを設定しています。 – AnjumSKhan

+0

@AnjumSKhan CMプロパティがListBoxItemに見つかりません。それは私が何を求めているのか、CMをListBoxItemsにだけ置く方法です。 – Gopi

答えて

0

私は問題があなたがリストボックスの高さと幅を指定していないと思うので、それは自動的にウィンドウのサイズに比例すると思います。技術的にはあなたのコードは正しく動作していますが、リストボックスはどこにでもあります。

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

ようなもので試してみて、それはIntemContainerStyleにする必要があり、リストボックスの外

+0

私は、ContextMenuがlistbox項目が存在しないリストボックスに表示していると言いました。高さは問題ではありません。実行時にlistboxitemsを追加するので、高さを指定しませんでした。 – Gopi

1

を右クリック:

<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> 
関連する問題