在我的wpf應用程序中,主視圖有5個不同的用戶控件,因爲用戶控件不相互關聯,所以我創建了5個不同的視圖模型(除了主視圖模型)。MVVM基於tabcontrol的應用程序
我想有一個列表或字典有usercontrols及其視圖模型列表, 現在,我想綁定tabitems與usercontrols列表並分配datacontexts,但由於列表或字典可以是改變了,我沒有找到一種方法來綁定usercontrols到tabitems。
例如,如果我有這將與用戶控件相關聯一個製表我可以分配
tab1View tview=new tab1View();
tview.DataContext= new tab1ViewModel();
tab1.Content=tview;
但我怎麼可以這樣做從具有視圖和的ViewModels的參考名單usercontrols?
請教我一個實現這個目標的最佳方法。
**答:**
我得到了我所需要的答案。視圖模型的 首先,泛型類型集合應創建 C# - Multiple generic types in one list
public abstract class Metadata
{
}
public class Metadata<DataType> : MetaData where DataType : class
{
private DataType mDataType;
}
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<tab1ViewModel>());
metadataObjects.Add(new Metadata<tab2ViewModel>());
然後,如果多個視圖均與同一視圖模型引用或只是應用的DataTemplate
除非'DataObject'爲您的代碼的其餘部分提供了一個有用的接口,否則我建議只編寫一個'object'列表。您的視圖仍然可以綁定到它,並且您不必從不提供封裝優勢的其他類中衍生出來,並且使代碼混亂。 –
使用ObservableCollection而不是List。 –
@ m-y:如果列表沒有改變,那麼列表不是一個錯誤的選擇。 –