Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF网格行中显示多个上下文菜单_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 在WPF网格行中显示多个上下文菜单

C# 在WPF网格行中显示多个上下文菜单,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我希望在基于WPf的桌面应用程序的网格视图中有两个上下文菜单。 目前我可以显示一个上下文菜单,但我想在一个条件下显示上下文菜单1,在另一个条件下显示上下文菜单2。怎么做 我使用下面的XAML代码来显示网格和上下文菜单 <dg:UCGrid x:Name="grdLetVariables" Grid.Row="2" GridTypeSource="LetGrid" DataContext="{B

我希望在基于WPf的桌面应用程序的网格视图中有两个上下文菜单。 目前我可以显示一个上下文菜单,但我想在一个条件下显示上下文菜单1,在另一个条件下显示上下文菜单2。怎么做

我使用下面的XAML代码来显示网格和上下文菜单

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

DataGrid上的触发器可以在这里帮助您。下面的代码只是为了说明

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

...
当然,条件1和条件2必须相互排斥。如果两者都适用于数据网格,则根据顺序
Condition2ContextMenu
将优先考虑


让我知道这是否有帮助…

DataGrid上的触发器可以在这里帮助您。下面的代码只是为了说明

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

...
当然,条件1和条件2必须相互排斥。如果两者都适用于数据网格,则根据顺序
Condition2ContextMenu
将优先考虑


让我知道这是否有帮助…

我也有类似的问题。。除了当我点击菜单项时,那些ContextMenus的数据绑定不起作用。知道发生了什么吗?我也有类似的问题。。除了当我点击菜单项时,那些ContextMenus的数据绑定不起作用。知道发生了什么吗?