我有一个PersonViewModel
类并与Person User Control绑定。每当我选择“人员使用控制”页面时,createPersonCommand
,deletePersonCommand
,viewPersonCommand
将始终重新实施。有没有想法创建这些命令一次?执行InitializePersonCollection
方法因为将从DB检索最新日期。
我的高级评论我的任务,并在此提到了他。
private ICommand createPersonCommand;
public ICommand CreatePersonCommand
{
get { return createPersonCommand; }
}
private ICommand deletePersonCommand;
public ICommand DeletePersonCommand
{
get { return deletePersonCommand; }
}
private ICommand viewPersonCommand;
public ICommand ViewPersonCommand
{
get { return viewPersonCommand; }
}
public PersonViewModel()
{
createPersonCommand = new DelegateCommand<object>(ExecuteCreatePersonCommand);
deletePersonCommand = new DelegateCommand<object>(ExecuteDeletePersonCommand);
viewPersonCommand = new DelegateCommand<object>(ExecuteViewPersonCommand);
InitializePersonCollection();
}
答案 0 :(得分:0)
只要命令执行方法不是static
,您就需要这样做。如果由于某种原因您可以创建命令方法static
,那么您也可以创建DelegateCommands static
并仅将静态实例分配给您的成员。
但正如人们已经提到的那样,那是没有意义的。您拥有的代码是完善的模式。没有理由改变它。
也许您应该检查命令是否实际放置好。是否每个人都需要它自己的命令,或者您是否需要主视图模型中的命令才能将单个人作为参数?这可能更有意义。
答案 1 :(得分:0)
您可以使用&#34;延迟加载&#34;。然后命令将按需实例化,不会影响从数据库加载数据的速度。
private ICommand createPersonCommand;
public ICommand CreatePersonCommand
{
get {
if (createPersonCommand == null) {
createPersonCommand = new DelegateCommand<object>(ExecuteCreatePersonCommand)
}
return createPersonCommand;
}
}