我正在尝试为我的 DTO 对象实现添加/编辑控制。我创建了一个 AddContainerView。AddContainerView 是为 DTO 中的每个字段构造一个视图,因为它的目的是显示添加/编辑的状态和进度(例如参见图片)。
橙色 = 当前视图
灰色 = 尚未尝试
绿色 = 有效条目
红色 = 无效条目
每个字段视图都有如下 IAdd 接口:
Field 是关联字段的名称,Value 是要绑定到该值的属性
public interface IAdd
{
bool IsSelected
{
get;
set;
}
bool IsValid
{
get;
set;
}
bool Attempted
{
get;
set;
}
string Field
{
get;
set;
}
object Value
{
get;
set;
}
}
问题:
因为这些视图中的每一个都有自己的属性(值),所以我需要重新创建 DTO 或从 AddContainerView 设置引用的 DTO。
问题:在没有静态变量或指针的情况下实现这一目标的最佳方法是什么?
更新:AddContainerView.xaml http://pastebin.com/Jf7XjyjR
AddContainerViewModel: http://pastebin.com/pM2Ye0qx
添加: http ://pastebin.com/GZCU0j3z
更新 2(可能的解决方案):
public void Save()
{
T tempObject = (T)Activator.CreateInstance(typeof(T));
Views.ToList().ForEach(v =>
{
var cv = (v as IAdd);
tempObject.GetType().GetField(cv.Field).SetValue(tempObject, cv.Value);
});
//Database update...
}