我有一种情况,TabControl的ItemsSource绑定到一组视图模型,然后为每个视图模型生成一个TabItem。每个Tab Item视图模型将实现非常相似的基本功能(例如,与Save,New,Delete和覆盖ToString()等相关的命令。)。
基于下面的代码示例,这是构建子视图模型的正确方法,在基类中使用参数化构造函数吗?我对Generics不太熟悉,但是这种情况是否会以某种方式适用于Generic基类?非常感谢任何反馈。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WpfApplication1
{
public abstract class PartViewModel : ViewModelBase
{
public PartTypeEnum PartType { get; set; }
ICommand Save { get; set; }
ICommand New { get; set; }
ICommand Delete { get; set; }
public PartViewModel(PartTypeEnum partType)
{
PartType = partType;
}
public override string DisplayName
{
get { return this.ToString(); }
}
public override string ToString()
{
return EnumHelper.GetEnumDescription(PartType);
}
}
public class Part1ViewModel : PartViewModel
{
public Part1ViewModel() : base(PartTypeEnum.Part1)
{
}
}
public class Part2ViewModel : PartViewModel
{
public Part2ViewModel() : base(PartTypeEnum.Part2)
{
}
}
// etc...
}
答案 0 :(得分:0)
我不认为这样。您的泛型类型T的不同可接受类型是什么?
ICommand
是您的抽象,无论ViewModel的哪一部分,您的ICommand都应该足够。
我也不确定你为什么要列举?枚举不是与不同的派生类完全相同吗?