2013-09-28 28 views
1

我有兩個操作的創建/編輯對話框。我應該在我的服務「客戶端」或客戶端中定義UI默認值ViewModel

當我在編輯模式下打開對話框並進行更改時,UI中的選擇被保存到數據庫中。

當我在創建模式下打開對話框時,我不必加載UI狀態,因爲我只有在我的UI中有默認值。

1.)現在我問自己,我應該通過我的DTO從域服務獲取UI的默認值,還是應該在我的ViewModels中爲UI定義這些默認值?

2.)每種方法的優點是什麼?

UPDATE

public SchoolyearCreateRequest CreateSchoolyear() 
     { 
      var request = new SchoolyearCreateRequest(); 
      request.MaxPeriodsPerWeek = TimeTable.GetMaxPeriodsPerWeek(); 
      request.RotationsPerWeek = TimeTable.GetRotationsPerWeek(); 
      request.FirstDaysOfAWeek = TimeTable.GetFirstDaysOfAWeek(); 
      request.FirstDayOfWeek = TimeTable.GetFirstDaysOfAWeek().First(); 
      request.RotationPerWeek = TimeTable.GetRotationsPerWeek().First(); 
      request.MaxPeriodPerWeek = TimeTable.GetMaxPeriodsPerWeek().First(); 
      request.ValidStartDate = DateTime.Today; 
      request.ValidEndDate = (Nullable<DateTime>)null; 
      return request; 
     } 

3個默認值(。首先())是從3種TimeTable.Get方法所採取是發送到客戶端這不是冗餘數據。

你還會用這種方式定義它,而不是在客戶端的viewmodel內部嗎?

UPDATE

namespace TLP.MODEL.DTO 
{ 
    public class SchoolyearCreateRequest 
    { 
     public IEnumerable<DayOfWeek> FirstDaysOfAWeek { get; set; } 
     public IEnumerable<int> MaxPeriodsPerWeek { get; set; } 
     public IEnumerable<int> RotationsPerWeek { get; set; } 
     public DateTime ValidStartDate { get; set; } 
     public DateTime? ValidEndDate { get; set; } 
     public DayOfWeek FirstDayOfWeek { get; set; } 
     public int MaxPeriodPerWeek { get; set; } 
     public int RotationPerWeek { get; set; } 
    } 
} 
+0

你能發佈SchoolyearCreateRequest類,只是我看到的類型,以幫助我更好地理解。 – Marc

+0

任何更新?.... – Marc

+0

@Marc是在8小時內,當我在家裏b4我的筆記本電腦:) – Elisabeth

回答

0

這是不是真的優勢/劣勢的問題,而是擔心完全分離的。在我看來,默認值屬於域側,既不在視圖也不在ViewModels中。可以這樣想:如果願意,假設採用域服務並構建一個完全新的用戶界面,而非MVVM技術(非MVVM),則默認值將保持不變。據我所知,這是一個很好的指標,它們不屬於UI方面。由於默認值也不是「真實邏輯」,因此您可以考慮將它們隔離在配置文件中,以便可以在不重新編譯軟件的情況下對其進行更改。

UPDATE:

好,我知道:那你在做什麼,基本上是:你已經有了可行值的列表,你想在你的UI(即設置實際值:MaxPeriodsPerWeek = = {4, 5, 7, 3, 2})。您的默認值是列表中的第一項(4)。我同意,沒有理由在域中設置此默認值,因爲它很容易就是列表中的第一項。

在我看來,就好像你在一個類中有兩個概念,這使得很難理解你的請求類的實際用途是什麼。很明顯,有一組可行的值MaxPeriodsPerWeek,然後有一個值表示實際設置的值「MaxPeriodPerWeek」。我是否理解正確?

沒有真正知道你在做什麼,我認爲這兩個應該分開。這是我所期待的,我瞭解的情況下,你在這裏:

public class SchoolyearCreateRequest 
{ 
    public DateTime ValidStartDate { get; set; } 
    public DateTime? ValidEndDate { get; set; } 
    public DayOfWeek FirstDayOfWeek { get; set; } 
    public int MaxPeriodPerWeek { get; set; } 
    public int RotationPerWeek { get; set; } 
} 

完全清楚這是什麼類及其屬性的意思。你的房產名稱真的讓人困惑:RotationPerWeekRotationsPerWeek ??RotationPerWeek必須等於1英語語法的原因;)

然後定義在數據層的一些方法,以獲得可行值的屬性,如果這是真的需要(我爲DaysOfWeek和整數)懷疑。綁定您的ComboBox的ItemsSource,或任何你有的可行值,它的SelectedValue到您的實際值,並將其初始SelectedIndex設置爲1有一個初始默認選擇。

希望,我沒誤會你想要做什麼,但...

+0

這也是我關心的一個新的UI,並且邏輯丟失。 – Elisabeth

+0

我已經用代碼示例更新了我的init問題。你能說出你對此的看法嗎? – Elisabeth

+0

複數值綁定到項目控件。奇異值是在項目控件中選擇的默認值,例如:) – Elisabeth

相關問題