|
ReoGrid 是 C# 編寫的.NET 電子表格控件(類似 Excel)。支持單元格合并,邊框樣式,圖案背景顏色,數(shù)據(jù)格式,凍結(jié),公式,宏和腳本執(zhí)行,表格事件等。支持 Winform\WPF。 ReoGrid.Mvvm 是針對 ReoGrid.WPF 編寫的一個開源類庫,用于方便地將控件綁定到模型,從而實現(xiàn)模型(Model)和視圖(View)的分離,適用于MVVM模式的開發(fā)。
項目地址:https://github.com/IUpdatable/ReoGrid.Mvvm,歡迎star
下面以一個圖書信息的簡單項目演示如何使用 演示效果如圖
1. 創(chuàng)建一個 WPF 項目2. NuGet 安裝 ReoGrid.MvvmInstall-Package ReoGrid.Mvvm
3. 創(chuàng)建一個圖書的模型(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 必須實現(xiàn)
(2) 可選,不指定該特性,那么就用Model類的類名作為工作表名稱。
(3)
(4)
4. 在ViewModel中修改:4.1 創(chuàng)建兩個成員變量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 //如果需要在輸入值前檢查變量的有效性,那么就實現(xiàn)該函數(shù) 17 _WorksheetModel.OnBeforeChangeRecord += OnBeforeChangeRecord;
4.3 在
|
|
|