在我的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:如果列表没有改变,那么列表不是一个错误的选择。 –