您评论的方法:
下拉我的 Model 属性,调用方法来为 ViewModel 属性分配值,通过绑定在 UI 上进行更改,这些更改反映回 ViewModel 属性,在 Save 调用方法上将 ViewModel 属性分配回 Model 属性的属性并保存到我的数据库从我的视图模型中传递模型属性
听起来很合理 - 但据我所知,CM可以绑定到属性的属性(您也可以显式绑定失败)
您只需要使用下划线 _ 来分隔Name控件的绑定路径
例如
<Button x:Name="SomeObject_SomeProperty" />
现在我从未尝试过,但ViewModelBinderCM 源代码中的这段代码似乎表明它可以工作:
var cleanName = element.Name.Trim('_');
var parts = cleanName.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
var property = viewModelType.GetPropertyCaseInsensitive(parts[0]);
var interpretedViewModelType = viewModelType;
for (int i = 1; i < parts.Length && property != null; i++)
{
interpretedViewModelType = property.PropertyType;
property = interpretedViewModelType.GetPropertyCaseInsensitive(parts[i]);
}
...etc
如果您确实需要手动映射,那么 AutoMapper 是一个很好的库 - 您可以重塑映射中的数据,这是将模型数据导入 ViewModel 的好方法,它可能不一定反映模型的形状