2011-08-08 2 views
0

WPFベースのデスクトップアプリケーションのグリッドビューに2つのコンテキストメニューを表示したいと思います。 現在、私は1つのコンテキストメニューを表示することができますが、1つの条件でコンテキストメニュー1を表示し、別の条件でコンテキストメニュー2を表示したいとします。どうやってするか?WPFグリッド行に複数のコンテキストメニューを表示

私はグリッドやコンテキストメニューを表示するには、次のXAMLコードをusignい

<dg:UCGrid x:Name="grdLetVariables" Grid.Row="2" GridTypeSource="LetGrid" 
               DataContext="{Binding}" > 
           <dg:UCGrid.Resources> 
            <x:Array Type="{x:Type sys:Object}" x:Key="GridExtensions"> 
             <MenuItem Header="Delete" Click="ContextMenuDelete"> 
              <MenuItem.Icon> 
               <Image Height="10" Source="../images/Delete.png"/> 
              </MenuItem.Icon> 
             </MenuItem> 
             <Separator /> 
             <MenuItem Header="Move Up" Click="MoveUpLetGrdRow"> 
              <MenuItem.Icon> 
               <Image Height="14" Source="../images/UpMove.png"/> 
              </MenuItem.Icon> 
             </MenuItem> 
             <MenuItem Header="Move Down" Click="MoveDownLetGrdRow"> 
              <MenuItem.Icon> 
               <Image Height="14" Source="../images/DownMove.png"/> 
              </MenuItem.Icon> 
             </MenuItem> 
             <Separator /> 
             <MenuItem Header="Cancel" Click="CancelLetGrdRowEdit"/> 
            </x:Array> 
           </dg:UCGrid.Resources> 
           <dg:UCGrid.ContextMenu> 
            <ContextMenu> 
             <ContextMenu.ItemsSource> 
              <CompositeCollection> 
               <CollectionContainer Collection="{StaticResource GridExtensions}" /> 
              </CompositeCollection> 
             </ContextMenu.ItemsSource> 
            </ContextMenu> 
           </dg:UCGrid.ContextMenu> 
          </dg:UCGrid> 
         </Grid> 

答えて

3

データグリッド上のトリガーは、ここであなたを助けることができます。以下のコードは、条件1と条件2勿論

<UserContorl.Resources> 
    <ContextMenu x:Key="Condition1ContextMenu" ../> 
    <ContextMenu x:Key="Condition2ContextMenu" ../> 
</UserControl.Resources> 
... 
<Style TargetType="{x:Type dg:UCGrid}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Condition1}" Value="Value1"> 
      <Setter Property="ContextMenu" Value="{StaticResource Condition1ContextMenu}"/> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Condition2}" Value="Value2"> 
      <Setter Property="ContextMenu" Value="{StaticResource Condition2ContextMenu}"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

は互いに排他的でなければなりません...ただ例示のためのものです。両方がデータグリッドに適用可能な場合は、Condition2ContextMenuの注文が優先されます。

+0

このことができますなら、私を知ってみましょう

は...私は、メニュー項目をクリックすると、それらのContextMenusのためのデータバインディングが動作しないことを除いて...同様の問題を抱えています。何が起こっているか考えてみませんか? – reservoirman

関連する問題