Silverlight MVVM添加/编辑
我必须构建一个表单(XAML),该表单将用于在DB中创建记录,稍后将通过传递ID进行编辑。表单中会有组合框,这些组合框将从DB填充,也会有文本框。我不想复制添加和编辑的XAML,并尽可能多地恢复代码。如何在MVVM中实现这一点?我想使用MVVM的最佳实践。如果有人能提供一个静止点,那就太好了。这是一个非常普遍的情况 您可以创建一个XAML控件/页,该控件/页接受特定类型的对象/实例,并允许编辑该对象的属性 在编辑的情况下,您将传入从数据库预填充的对象 在Create中,传入该类型的新实例 调用方/主机将知道传递给编辑控件的对象类型Silverlight MVVM添加/编辑,silverlight,mvvm,add,edit,Silverlight,Mvvm,Add,Edit,我必须构建一个表单(XAML),该表单将用于在DB中创建记录,稍后将通过传递ID进行编辑。表单中会有组合框,这些组合框将从DB填充,也会有文本框。我不想复制添加和编辑的XAML,并尽可能多地恢复代码。如何在MVVM中实现这一点?我想使用MVVM的最佳实践。如果有人能提供一个静止点,那就太好了。这是一个非常普遍的情况 您可以创建一个XAML控件/页,该控件/页接受特定类型的对象/实例,并允许编辑该对象的属性 在编辑的情况下,您将传入从数据库预填充的对象 在Create中,传入该类型的新实例 调用方
因此,当编辑控件返回该对象时,调用方/主机可以负责向数据库添加/更新数据。您可以使用Silverlight Toolkit中的数据表单,它提供了不同的编辑模式,例如添加、编辑 下面是该方法的概要。您将需要两个视图模型。一个用于数据,另一个用于表单
// FormViewModel.cs
public class FormViewModel
{
public Customer DataItem {get; set;}
// --------- perform action ---------------
private ICommand _PerformActionCommand = new DelegateCommand(PerformAction);
public ICommand PerformActionCommand {
get { return _PerformActionCommand; }
}
public void PerformAction()
{
if (Customer.IsNew)
InsertCustomer(Customer);
else
SaveCustomer(Customer);
}
// ------ Button Label --------------
public string ButtonLabel {
get {
return (Customer.IsNew)? "Add": "Update";
}
}
}
以下是表格:
<UserControl.Resources>
<local:FormViewModel x:Key="formVM" />
</UserControl.Resources>
<Button
Content="{Binding Path=ButtonLabel
Source={StaticResource formVM}}"
Command="{Binding Path=PerformActionCommand,
Source={StaticResource formVM}}" />
这是一个非常普遍的问题,表明您缺乏努力。试着从总体上研究MVVM,然后再提出关于具体问题的问题。你有这样的例子吗?我需要1视图和2视图模型还是反之?