我必须构建一个表单(XAML),该表单将用于在 DB 中创建记录,稍后将通过传递 ID 进行编辑。表单中会有组合框,这些组合框将从 DB 中填充,并且还会有文本框。我不想为 ADD 和 EDIT 复制 XAML 并尝试尽可能多地重用代码。我怎样才能在 MVVM 中实现这一点?我想使用 MVVM 的最佳实践。如果有人可以提供一个统计点,那就太好了。
问问题
283 次
2 回答
0
您可以使用 Silverlight Toolkit 中的 DataForm,它提供了不同的编辑模式 - 例如添加、编辑。
这是该方法的概述。您将需要两个视图模型。一个用于数据,另一个用于表单。
// 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}}" />
于 2012-08-21T22:07:20.323 回答
0
这是一个非常普遍的场景。
您可以创建一个XAML控件/页面,该控件/页面采用特定类型的对象/实例并允许编辑该对象的属性。
在Edit的情况下,您传入一个从数据库预填充的对象。
在Create的情况下,您传入该类型的新实例。
调用者/主机会知道传递给编辑控件的对象类型。
因此,当该对象通过编辑控件返回时,调用者/主机可以处理向数据库添加/更新。
于 2012-08-11T18:40:38.097 回答