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

时间:2015-12-01 01:26:26

标签: c# wpf mvvm datagrid contextmenu

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

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

我可以使用visibility属性显示和隐藏上下文菜单。但现在我想在用户选择时启用/禁用“-Cheque”上下文菜单。如果捐赠列中已经有超过100美元(已在datagrid中显示),我该如何禁用“检查”上下文菜单。

这是我的datagrid:

 <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 个答案:

答案 0 :(得分:0)

  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;    
        }
    
  2. 将SelectedItem属性绑定到ViewModel的SelectedItems属性。所以你可以检查其设置器中的条件。