ReoGrid 是 C# 编写的.NET 电子表格控件(类似 Excel)。支持单元格合并,边框样式,图案背景颜色,数据格式,冻结,公式,宏和脚本执行,表格事件等。支持 Winform\WPF。 ReoGrid.Mvvm 是针对 ReoGrid.WPF 编写的一个开源类库,用于方便地将控件绑定到模型,从而实现模型(Model)和视图(View)的分离,适用于MVVM模式的开发。
项目地址:https://github.com/IUpdatable/ReoGrid.Mvvm,欢迎star
下面以一个图书信息的简单项目演示如何使用 演示效果如图
1. 创建一个 WPF 项目2. NuGet 安装 ReoGrid.MvvmInstall-Package ReoGrid.Mvvm
3. 创建一个图书的模型(Model)1 [WorksheetAttribute(Title = "Books")] 2 public class Book: IRecordModel 3 { 4 [ColumnHeader(Index = 10, IsVisible = false)] 5 public int Id { get; set; } 6 7 [ColumnHeader(Index = 20, Text = "Name", Width = 150)] 8 public string Title { get; set; } 9 10 [ColumnHeader(Index = 30)] 11 public string Author { get; set; } 12 13 [ColumnHeader(Index = 35, Text = "Type")] 14 public BindingType BindingType { get; set; } 15 16 [ColumnHeader(Index = 36, Text = "OnSale")] 17 public bool IsOnSale { get; set; } 18 19 [NumberFormat(DecimalPlaces = 2)] 20 [ColumnHeader(Index = 40)] 21 public decimal Price { get; set; } 22 23 [DateTimeFormat( CultureName = "en-US")] 24 [ColumnHeader(Index = 45, Text = "Publish Date", Width = 200)] 25 public DateTime Pubdate { get; set; } 26 27 public int RowIndex { get; set; } 28 }
(1) Model 必须实现
(2) 可选,不指定该特性,那么就用Model类的类名作为工作表名称。
(3)
(4)
4. 在ViewModel中修改:4.1 创建两个成员变量1 private ObservableCollection<IRecordModel> _Books; 2 private WorksheetModel _WorksheetModel;
4.2 初始化1 _Books = new ObservableCollection<IRecordModel>(); 2 for (int i = 0; i < 10; i++) 3 { 4 Book book = new Book(); 5 book.Id = i; 6 book.Title = string.Format("Title {0}", i); 7 book.Author = string.Format("Author {0}", i); 8 book.BindingType = BindingType.Hardback; 9 book.IsOnSale = true; 10 book.Price = (decimal)(i * 10.1); 11 book.Pubdate = DateTime.Now; 12 _Books.Add(book); 13 } 14 // 变量 reoGridControl 是 ReoGridControl 的控件元素实例 15 _WorksheetModel = new WorksheetModel(reoGridControl, typeof(Book), _Books); 16 //如果需要在输入值前检查变量的有效性,那么就实现该函数 17 _WorksheetModel.OnBeforeChangeRecord += OnBeforeChangeRecord;
4.3 在
|
|