devexpress 的 grid 增加行删除功能
1、新建UserControl起名为 ContextMenuModule,示例代码如下:
<UserControl x:Class="Main.UserControls.EvidencePackageList" x:Name="ContextMenuModule" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Main.UserControls" xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm" xmlns:dxrudex="http://schemas.devexpress.com/winfx/2008/xaml/reports/userdesignerextensions" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" Loaded="UserControl_Loaded">
2、建一个 grid 前台代码示例如下:
<dxg:GridControl Name="grid" SelectedItemChanged="grid_SelectedItemChanged" MouseDoubleClick="grid_MouseDoubleClick" ContextMenu="{ StaticResource ContextMenu }" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <dxg:GridControl.View> <dxg:TableView NavigationStyle="Row" x:Name="gridView" AllowColumnFiltering="False" AllowScrollAnimation="True" ShowGroupPanel="False" ShowGridMenu="GridView_ShowGridMenu"> <dxg:TableView.RowCellMenuCustomizations> <dxb:BarButtonItem Name="refresh" Content="刷新" ItemClick="Refresh_Click" Command="{Binding ElementName=ContextMenuModule}" CommandParameter="{Binding ElementName=ContextMenuModule, Path=CellMenuInfo.Row.RowHandle.Value}" /> <dxb:BarButtonItem Name="deleteRow" Content="删除" Command="{Binding ElementName=ContextMenuModule,Path=DeleteRow}" CommandParameter="{Binding ElementName=ContextMenuModule, Path=CellMenuInfo.Row.RowHandle.Value}" /> </dxg:TableView.RowCellMenuCustomizations> </dxg:TableView> </dxg:GridControl.View> <dxg:GridControl.Columns> <dxg:GridColumn Header="ID" HorizontalHeaderContentAlignment="Left" FixedWidth="True" FieldName="ID" Width="*" Visible="False" /> <dxg:GridColumn Header="名称" HorizontalHeaderContentAlignment="Left" FixedWidth="True" FieldName="NAME" Width="*" /> </dxg:GridColumn> </dxg:GridControl.Columns> </dxg:GridControl>
3、后台加立事件
public static readonly DependencyProperty CellMenuInfoProperty = DependencyPropertyManager.Register("CellMenuInfo", typeof(GridCellMenuInfo), typeof(EvidencePackageList), new FrameworkPropertyMetadata(null)); public ICommand DeleteRow { get; private set; } public EvidencePackageList() { DeleteRow = new DelegateCommand<object>(OnDeleteRow); InitializeComponent(); } public GridCellMenuInfo CellMenuInfo { get { return (GridCellMenuInfo)GetValue(CellMenuInfoProperty); } set { SetValue(CellMenuInfoProperty, value); } }
备注:
Command="{Binding ElementName=ContextMenuModule,Path=DeleteRow}" 里的指的是当前用户控件的名称。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?