您能否想到在基於MVVM的WPF應用程序中IEditableObject
仍然有用的場景?如果是這樣,你有一個例子來證明這一點。MVVM中的IEditableObject
7
A
回答
14
我在我的一個應用程序中使用了IEditableObject
。例如,如果您有編輯對象的對話框,則可以在ViewModel上實現IEditableObject。當對話框打開時您可以撥打BeginEdit()
,當用戶點擊確定時撥打EndEdit()
,當用戶點擊取消時撥打CancelEdit()
。
IEditableObject
只要您希望能夠回滾更改,它就是一個很好的界面。
2
在DataGrid
中顯示的類型中。這是必要的,因爲當我使用標籤並且DataGrid
被存儲在該標籤中時,如果一個單元格處於活動狀態,則切換強制提交以在DataGrid
內發言所需的標籤;自從他們沒有承諾之後回滾這些變化。 T
有一種行爲適用於DataGrid
以實現此功能,但IEditableObject
部分位於下方。
private IDatabaseConnection _copy;
void IEditableObject.BeginEdit()
{
if (this._copy == null)
this._copy = _container.Resolve<IDatabaseConnection>();
_copy.Database = this.Database;
_copy.DisplayName = this.DisplayName;
_copy.HostName = this.HostName;
_copy.Username = this.Username;
_copy.Password = this.Password;
}
void IEditableObject.CancelEdit()
{
this.Database = _copy.Database;
this.DisplayName = _copy.DisplayName;
this.HostName = _copy.HostName;
this.Username = _copy.Username;
this.Password = _copy.Password;
}
void IEditableObject.EndEdit()
{
_copy.Database = String.Empty;
_copy.DisplayName = String.Empty;
_copy.HostName = String.Empty;
_copy.Username = String.Empty;
_copy.Password = String.Empty;
}
2
我已經得到的IEditableObject
實現我的應用程序,這樣我可以從什麼是否已經進入用戶無效更新我的數據模型保存,並回滾到原來的值,如果用戶放棄改變。
相關問題
- 1. Silverlight的MVVM IEditableObject對話框
- 2. 在Silverlight中使用IEditableObject
- 3. 只讀的DataGridView和IEditableObject
- 4. 如何實現視圖模型的IEditableObject?
- 5. WPF DataGrid調用兩次IEditableObject上的BeginEdit?
- 6. IEditableObject與DataGrid的用法是什麼?
- 7. MVVM中的ContextMenu
- 8. ListBox MVVM中的ClearSelection
- 9. MVVM中的模型
- 10. MVVM中的WP7 WebBrowser
- 11. ASP.NET MVC中的MVVM
- 12. MVVM中的ComboBox SelectionChanged
- 13. MVVM中Treeview的HierarchicalDataTemplate
- 14. MVVM中的用戶控件事件或MVVM中的視圖
- 15. 在MVVM中使用SQL命令MVVM
- 16. 如何識別IEditableObject是否處於編輯狀態?
- 17. 使用MVVM在XAML中禁用TelerikGrid中的行使用MVVM
- 18. 如何使用IEditableObject對象在WPF DataGrid中執行單擊複選框選擇
- 19. MVVM Light中的EventToCommand問題
- 20. UWP中的MVVM驗證
- 21. Silverlight中的動畫和MVVM
- 22. MVVM中的不同型號
- 23. MVVM中的樣式按鈕
- 24. ViewModelLocator中的ViewModels MVVM Light
- 25. MVVM中的模型職責
- 26. DataGrid中的SelectedItem MVVM Light
- 27. 使用MVVM Light中的ViewModels?
- 28. MVVM燈中的子窗口
- 29. DataForm中的Silverlight MVVM驗證
- 30. MVVM中的調度對象
您是在每個ViewModel類中還是在原始抽象類中實現這些方法?如果原來的課程,你如何在那裏做到這一點。我正在考慮從數據庫中再次獲取模型,但模型沒有共同父類。我不確定反射方法,因爲我只編輯模型部分。 – 2011-02-20 13:41:50
這取決於。如果模型具有在這些事件上運行的通用功能,那麼我只會在抽象基類中實現它。如果是這樣,你可以在那裏實現它,但是在它裏面,調用派生類需要提供的抽象方法,比如OnBeginEdit()。這樣你就可以覆蓋通用和特定的功能。 – Botz3000 2011-02-21 07:25:08
我有一個ViewModel是一個對象的集合。我想用對話框來編輯選定的gridview項目。它實現了'IEditableObject',包含網格的視圖,網格綁定到的ViewModel,或者ViewModel包含一個集合的類? – 2014-06-05 12:13:50