2011-06-24 18 views
2

私は内部に項目なしで始まるリストボックスを持っています。ユーザーがGUIを使用してコンボボックスから値を選択し、追加ボタンをクリックすると、リストボックスに項目が追加されます。リストボックスにはコンテキストメニューも設定されています。ContextMenuの可視性のためのトリガー?

XAMLを使用して、Listbox.contextmenu.Visibilityプロパティがリストボックスに項目がないときに非表示に設定されていることを確認するにはどうすればよいですか?

UPDATE

私は実際には最終的にこのコードを使用していました。私は、リストが空の場合のContextMenuの可視性をいじっことがちょうどnull全体メニューから、良いアイデアだとは思わないそのappropriatness

<Style TargetType="ListBox"> 
     <Style.Resources> 
      <ContextMenu x:Key="cm"> 
       <MenuItem Header="Buy"/> 
       <MenuItem Header="Sell"/> 
      </ContextMenu> 
     </Style.Resources> 
     <Setter Property="ContextMenu" Value="{StaticResource cm}"/> 
     <Style.Triggers> 
      <Trigger Property="ListBox.HasItems" Value="False"> 
       <Setter Property="ContextMenu.Visibility" Value="Hidden"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

答えて

6

にコメントしてください。

あなたはまた、自分自身だけがItemContainerStyleを使用してアイテムにContextMenusを定義することを選択することができる

<Style TargetType="{x:Type ListBox}"> 
    <Style.Resources> 
     <ContextMenu x:Key="cm"> 
      <!-- Menu here --> 
     </ContextMenu> 
    </Style.Resources> 
    <Setter Property="ContextMenu" Value="{StaticResource cm}" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Items.Count, RelativeSource={RelativeSource Self}}" Value="0"> 
      <Setter Property="ContextMenu" Value="{x:Null}" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

、その後、何のContextMenuはアイテムなしで開くことができませんが、当然のことかもしれないが、あなたのシナリオに適合していません。

+0

私は実際にこれを最後に使用しました。 – caa

+0

<スタイルのTargetType = "リストボックス"> <のContextMenu X:キー= "CM"> <トリガプロパティ= "ListBox.HasItems" 値= "FALSE"> <セッタープロパティ= "ContextMenu.Visibility"値= "非表示" /> caa

+0

なぜそれを無効にしないのですか?可視性を変えることは、私の財産を悪用するようなものです。 (また、私の答えがあなたの問題を解決したか、または左のチェックマークのアウトラインでそれを受け入れることができれば十分に助けられました) –