2010-11-16 43 views
1

我有一個選項卡控件,其中每個TabItem是一個UserControl。我想把用戶控件保存在TabControl的ItemsSource中。 ItemsSource列表是否放在Window的ViewModel中?如果是這樣,我覺得它已經打破了MVVM,因爲ViewModel現在會有GUI控件。或者,我是否將此列表放在包含選項卡控件的窗口的代碼隱藏區域中?我應該在哪裏放置UserControl列表並且不要打破MVVM?

任何建議將是偉大的!

回答

0

這是我所做的。 我創建了一個接口,我的所有控件都實現了IMyAppControl,它具有一些信息,如標題,描述和其他元數據。

我的主窗口有一個ObservableCollection,它與ItemsSource綁定到的選項卡有關。

0

通過選項卡控件,單個選項卡通常在XAML中靜態創建,而不是在運行時通過數據綁定創建。然而,你沒有理由不這樣做。如果你有一個視圖集合,他們肯定應該存儲在視圖中。

請記住,您還可以將ItemsSource綁定到ViewModels對象列表,WPF將使用ItemTemplate爲ViewView生成一個視圖,並將ViewModel對象設置爲DataContext。 ViewModel的這個集合應該存儲在一個視圖模型中,儘管在某些時候視圖模型顯然必須存儲在一個視圖中。

0

這很可能是通過多種方式完成的,所有這些都是關於它們是如何「適合MVVM的」的爭論。

我的設置如下所示。

我的主窗口具有結合到其含有屬性

public ObservableCollection<Workspace> WorkspaceCollection{get;set;} 

主窗口一個MainWindowViewModel一個DataContext具有ItemsSource勢必WorkspaceCollection

工作區一個TabControl都是的ViewModels和綁定到不同的視圖/ usercontrols via DataTemplates

0

您可能會看看編寫示例應用程序的WPF Application Framework (WAF)。它有一個TabControl,其中每個TabItem都是一個UserControl,它通過應用MVVM模式來實現。