我的窗口中有一個DataGrid和兩個ListBox。我正在使用實體框架連接到我的SQL Server。根據我在ListBoxes參數中所做的選擇將被傳遞給我的存儲過程,我的DataGrid的數據將被檢索。我能夠在不使用MVVM的情況下實現此功能。我想知道如何使用MVVM實現這一點。請幫助我。提前致謝。如何使用綁定更新UI
0
A
回答
4
首先,MVVM是關於將代碼的關注點分離到適當的區域。例如,通過EF與您的數據庫交談應在中完成。 ViewModel負責保存數據,並對其進行整形或按摩以使其更適合於顯示(即將枚舉轉換爲顏色等)。
要實現在MVVM方式的功能,您將需要使用綁定和您的視圖模型綁定到您的看法:
public class MyControl
{
public MyControl()
{
this.DataContext = new MyViewModel();
}
}
:
<MyControl>
<LayoutRoot>
<ListBox ItemsSource={Binding MyItems} SelectedItem={Binding MySelection} />
</LayoutRoot>
</MyControl>
後面的代碼中的視圖
和你的ViewModel看起來是這樣的:
public class MyViewModel : INotifyPropertyChanged
{
public ObservableCollection<MyDataObject> MyItems
{
get { return _myItems; }
set
{
_myItems = value;
OnPropertyChanged("MyItems");
}
}
public MyDataObject MySelection { get; set; }
public void DoSomethingWithDatabase()
{
Model.DoSomething(MySelection);
}
}
這只是一個非常簡單的例子簡單地說明如果你使用MVVM的方式來做什麼(而且我故意錯過了一堆東西),那麼它就是必需的。要做一個恰當的例子並記錄下你需要知道的所有重要部分至少需要一本書的一章,所以我將把你的MSDN文章引薦給你進一步閱讀:Implementing the Model-View-ViewModel Pattern。
和模型可能只是一個敲門磚,如果您還實現SOA,型號可能只是調用一個服務,然後會談到數據庫。
這也可以在視圖中使用Converters完成,但在轉換器中可能並不總是可行或實用。
相關問題
- 1. 使用綁定屬性更新UserControl UI
- 2. XAML綁定UI更新
- 3. 使用UI更新模型和綁定更新操作
- 4. 如何使用jQuery更新knockout綁定?
- 5. 如何在更新ViewModels時防止重新綁定Kendo UI Grid
- 6. WPF雙向綁定未從UI更新
- 7. 綁定不更新多個UI元素
- 8. WPF通過綁定從DataTable更新UI
- 9. 更新WPF UI綁定的數據源
- 10. 敲除模板綁定不更新UI
- 11. 更新UI綁定到相關屬性
- 12. UI未更新綁定元素
- 13. 如何暫停WPF中綁定的UI更新?
- 14. 數據綁定在使用{綁定}或{綁定}時未更新
- 15. Angularjs UI不會更新由承諾更新的服務綁定?
- 16. 如何使用Task.Factory.StartNew更新UI線程?
- 17. 如何使用AsyncTask更新UI
- 18. 如何使用monic模型綁定使用Subsonic更新?
- 19. Angular如何知道應該重新應用綁定以使用更新的數據來刷新UI元素?
- 20. 如何綁定UI元素?
- 21. 更新綁定
- 22. 何時更新綁定?
- 23. 更新到ListBox綁定集合後刷新UI
- 24. UI綁定更新到一個ObservableCollection被重新賦值
- 25. 當代碼更改綁定源時更新UI
- 26. XAML數據綁定在屬性更改時不更新UI
- 27. 模型綁定如何更新
- 28. 如何手動更新多重綁定
- 29. 如何強制更新可可綁定?
- 30. 如何使用gdal python綁定來更新GeoTiff標籤?
在視圖模型中做轉換確實很難做到正確。大多數嘗試最終連接屬性的人會在模型和視圖模型之間更改通知,從而導致內存泄漏。 – 2012-01-10 01:13:08
我認爲你正在混合模型和虛擬機的一些職責。傳統上,諸如將狀態轉換爲可視表示(將枚舉轉換爲顏色)等任務不是VM的工作,而是視圖(自定義轉換器,DataTemplate選擇器等)的工作。 – Will 2012-01-10 15:34:36
@因此,腳註#2 - 枚舉顏色只是一個易於理解的示例使用。我已經看到很多情況下,更適合在虛擬機中評估內容而不是轉換器(業務規則,服務訪問),但我無法想象一些簡單而且沒有人爲我的例子設計的東西。 – slugster 2012-01-10 17:02:44