在选定行 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" >
感谢您的帮助。
青蛙
使用 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.
我在使用 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" >
感谢您的帮助。 青蛙
使用 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.