在选定行 wpf mvvm 上隐藏数据网格中的特定上下文菜单

Hide specific context menu in datagrid upon selected row wpf mvvm

我在使用 WPF Mvvm 的数据网格上遇到了一个问题。我在数据网格上设置上下文菜单。 这是我的代码。

 <DataGrid.ContextMenu>
                <ContextMenu IsEnabled="{Binding IsEnableCaseRefNo}" 
                             DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"  >                                                       
                    <MenuItem Header=" - View Case" >
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Click">
                                <i:InvokeCommandAction Command="{Binding ContextCommand}" CommandParameter="VCD"></i:InvokeCommandAction>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </MenuItem>
                    <MenuItem Header=" - Cheque" Visibility="{Binding SyncColumnVisibility, Converter={StaticResource visibilityConverter}}">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Click">
                                <i:InvokeCommandAction Command="{Binding ContextCommand}" CommandParameter="BMK"></i:InvokeCommandAction>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </MenuItem>
                    <MenuItem Header=" - Cash" Visibility="{Binding SyncColumnVisibility, Converter={StaticResource visibilityConverter}}">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Click">
                                <i:InvokeCommandAction Command="{Binding ContextCommand}" CommandParameter="UNBMK"></i:InvokeCommandAction>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </MenuItem>
               </ContextMenu>
            </DataGrid.ContextMenu>

我可以使用可见性显示和隐藏上下文菜单 属性。但现在我想在用户选择时 enable/disable“-Cheque”上下文菜单。当捐赠栏中有超过 100 美元(已显示在数据网格中)时,如何禁用 'Cheque' 上下文菜单。

这是我的数据网格:

 <DataGrid Name="dgv" Background="WhiteSmoke" AutoGenerateColumns="False" CanUserAddRows="False" SelectedItem="{Binding SelectedItems,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                      CanUserDeleteRows="False" Grid.Row="2" ItemsSource="{Binding LstcaseHearingModel,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"                              
                      Grid.Column="2" HorizontalAlignment="Stretch" >

感谢您的帮助。 青蛙

  1. 使用 SelectedCellsChanged 事件获取所需的项目。

        private void Dgrd_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            SomeEntity item = (SomeEntity) Dgrd.CurrentItem; 
    
            if(item.Donate > 100)
                viewModel.SyncColumnVisibility = Visibility.Collapsed;
            else
                viewModel.SyncColumnVisibility = Visibility.Visible;    
        }
    

当您将 SelectedItem 属性 绑定到您的 ViewModel 的 SelectedItems 属性 时。所以你可以检查它的条件 setter.