2016-03-04 26 views
0

==> A)UI模型對象:即一流的,我有性質變更通知(INotifyPropertyChanged的),SelectedItemXXX綁定到一些組合框的SelectedItem如何區分UI結合被傳遞到中間層模型對象和模型對象

==> b)示範對象:只是普通objecti.e POCO(普通老式CLR對象)

問題1)一般什麼更好的能有這樣models.I意味着我們只需要保持只(一)型?

問題2)如果我們維護兩個模型,有什麼更好的方法。我們可以有一些關聯或某種方法來生成模型對象(b)。

問題3)如果我們有兩個模型,通常遵循什麼名稱約定。 我把它命名爲PersonUI,Person我的意思是任何更好的命名方式?

三江源

回答

2

回答問題1:沒有。您通常需要簡單的模型對象來執行UI模型領域之外的現實世界業務邏輯(又稱域邏輯)。在Single Responsibility Principal之後,您不應該使用業務模型對象來卷積UI模型對象。

回答問題2: - 一個非常常用的圖案是MVVM

  • 米 - 表示模型(業務或域邏輯層)
  • N - 表示的視圖(在WPF和Silverlight是XAML和代碼後面)
  • VM表示視圖模型(或您的話UI模型對象)

MV對於WPF和SilverLight,VM都是推薦的最佳實踐。它將UI與模型分開,並且可以更輕鬆地進行測試和重用。

回答問題3:你的UI模型對象(一)一個普遍的命名約定使用XXXXViewModel。例如,如果你有一個名爲Giraffe.xaml WPF控件和背後的Giraffe.xaml.cs文件對應的代碼,那麼名字您的視圖模型文件將GiraffeViewModel.cs和類看起來是這樣的:

public class GiraffeViewModel : INotifyPropertyChanged {..

保持模型對象的名稱到裏面包含的邏輯。例如:GiraffeVision.cs

+0

以下是命名約定的問題。我們有員工註冊視圖和相應的視圖模型,即EmployeeRegisterViewModel。現在EmployeeRegisterView需要一些需要綁定到特定UI控件的對象,可以說EmployeePersonal信息需要捕獲SelectedItem。如果我將該對象命名爲EmployeePersonalInfoViewModel,那麼它將成爲ViewModel的長列表,當我們想要搜索MainViewModel(EmployeeRegisterViewModel)以處理某種獲取數據問題時,這會導致ViewModel的長列表混淆。就像GetData不起作用。 – iCode

+0

在這種情況下,您的EmployeePersonalInformation對象將是EmployeeRegisterViewModel中的ObservableCollection屬性。 ObservableCollections是網格或模板中使用的Model對象列表,因此您可以在視圖上顯示其中的很多對象。請參閱http://wpfgrid.blogspot。de/2014/02/simple-observablecollection-wpf-mvvm.html - 中途注意Trades模型類。這個域模型被放入一個ObservableCollection中以便在TradesView中動態顯示。 – Taterhead

+0

在實際情況下,它不是一個集合對象。我只是給出了示例場景。我們需要維護不能集合項的綁定對象。它們是一對一的,但我需要從UI控件中獲取信息。這個UI控件應該綁定到一些對象(即INotifiable,SelectedXXX ..)。它實際上是ViewModel。但現在如果我將它命名爲XXX_ViewModel ...它的混淆很多...搜索文件..找到MainViewModel(其中實際的邏輯去調用中間層和其他comamnds的東西)。 – iCode