解密酷炫WPF界面開發技巧!WPF Data Grid和TreeList

點擊“瞭解更多”獲取DevExpress v19.2完整版下載

通過DevExpress WPF Controls,您能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注於當代客戶的需求和構建未來新一代支持觸摸的解決方案。DevExpress WPF Data Grid和TreeList的最新版本引入新的編輯模式——Edit Entire Row。

在默認模式下,通過in-place編輯器進行的更改將立即發佈到數據源。與默認模式不同,Edit Entire Row要求用戶按下Update按鈕來將更改顯式發佈到您的數據源:

解密酷炫WPF界面開發技巧!WPF Data Grid和TreeList

要激活Edit Entire Row模式,請使用TableView.ShowUpdateRowButtons / TreeListView.ShowUpdateRowButtons 屬性。

當您在一行中更改單元格值時,WPF Data Grid / TreeList凍結UI。除非記錄或取消更改,否則不能離開已編輯的行。

要發佈所做的更改,請單擊Update按鈕;如果單擊Cancel按鈕,更改將被放棄。

解密酷炫WPF界面開發技巧!WPF Data Grid和TreeList

在示例中,Data Grid綁定到實體框架:

public MainWindow() {InitializeComponent();var context = new IssuesContext();grid.ItemsSource = context.Issues.ToArray();}

public class IssuesContext : DbContext {// ...}

當要更改網格值時,僅更改內存中的副本,而不更改數據庫中的實際數據。若要保存更改並攔截可能的數據庫錯誤,請處理GridViewBase.ValidateRow事件,並在DataContext上顯式調用SaveChanges:

<tableview>

void TableView_ValidateRow(object sender, GridRowValidationEventArgs e) {var issue = (Issue)e.Row;using(var context = new IssuesContext()) {var result = context.Issues.SingleOrDefault(b => b.Id == issue.Id);if(result != null) {result.Subject = issue.Subject;result.Priority = issue.Priority;result.Votes = issue.Votes;result.Priority = issue.Priority;context.SaveChanges();}}}

示例中的數據庫不允許您保存帶有空主題的行:

protected override void OnModelCreating(DbModelBuilder modelBuilder) {base.OnModelCreating(modelBuilder);

modelBuilder.Entity<issue>().Property(x => x.Subject).IsRequired();}/<issue>

如果您嘗試指定一個空主題,則Data Grid將允許您更正值或單擊Cancel按鈕以返回以前的值。



分享到:


相關文章: