2010-10-20 43 views
1

我用約什 - 史密斯THE MODEL-VIEW-VIEWMODEL (MVVM) DESIGN PATTER FOR WPF約什 - 史密斯MVVM模式大問題

創建項目,但是有一個問題。相同的工作區顯示相同的操作。我的VIEW包含tabcontrol。創建2個或更多相同的工作區後,當我從任何工作區更改tabcontrol的選定索引時,其他相同的工作區tabcontrol顯示相同的結果。

我在喬希史密斯示例項目上測試。但是和我的項目一樣。如果你想展示。從here,並在MainWindowViewModel.cs改變下面的代碼從

void ShowAllCustomers() 
     { 
      AllCustomersViewModel workspace = null; 
       this.Workspaces.FirstOrDefault(vm => vm is AllCustomersViewModel) 
       as AllCustomersViewModel; 

      if (workspace == null) 
      { 
       workspace = new AllCustomersViewModel(_customerRepository); 
       this.Workspaces.Add(workspace); 
      } 

      this.SetActiveWorkspace(workspace); 
     } 

下載約什 - 史密斯的代碼要

void ShowAllCustomers() 
     { 
      AllCustomersViewModel workspace = null; 

      workspace = new AllCustomersViewModel(_customerRepository); 
      this.Workspaces.Add(workspace);    

      this.SetActiveWorkspace(workspace); 
     } 

然後運行代碼,並打開2個或更多All Customer view和更改列表視圖列的順序。從它,你可能會被具有聲音:all customer view顯示同樣的結果

如何解決這個問題

回答

3

如果我可以引述薩沙理髮蓮花的創始人在http://www.codeproject.com/KB/WPF/CinchV2_3.aspx參見「特別提示工作區」全部打開同樣的問題,但我也在學習,所以我可能是錯的。

「現在所有這一切都是盛大的,但不幸的是,WPF在TabControl的形式中拋出了一些奇怪的東西,它是一個控件的BASTARD,有多少人知道WPF中的TabControls只能保持在VisualTree中選擇的項目

這聽起來不好嗎?不,再想一想(雖然這只是使用DataTemplates時的一個問題,直接TabItem/View組合是好的),所以我們有幾個使用MeffedMVVM的視圖來在TabControl中創建一個ViewModel,然後更改制表符,並猜測View被丟棄的內容,當我們回到前一個TabItem時,就像我們使用view 1st和MeffedMVVM一樣,爲View創建了一個新的ViewModel。

+0

感謝您的重播。我會看到這篇文章。 – ebattulga 2010-10-20 10:15:36

1

我不知道我明白你想說什麼,但我有一個問題,即添加工作區時沒有選擇新選項卡。在TabControl上將IsSynchronisedWithCurrentItem屬性設置爲True解決了我的問題。