在Xamarin表单中定义命令方法的返回类型&;MVVM
我想为一个方法定义一个返回类型,该方法与我的命令关联,该命令在单击按钮时执行。比如说, 点击按钮在Xamarin表单中定义命令方法的返回类型&;MVVM,xamarin,mvvm,xamarin.forms,Xamarin,Mvvm,Xamarin.forms,我想为一个方法定义一个返回类型,该方法与我的命令关联,该命令在单击按钮时执行。比如说, 点击按钮 this.Detail = ViewModel.MasterItemSelectedCommand.Execute(seleteditem); 在模型构造函数中 MasterItemSelectedCommand = new Command<string>(OnMasterItemSelected); 从这个方法中,我想返回我可以在button click方法中使用的Page对象。如
this.Detail = ViewModel.MasterItemSelectedCommand.Execute(seleteditem);
在模型构造函数中
MasterItemSelectedCommand = new Command<string>(OnMasterItemSelected);
从这个方法中,我想返回我可以在button click方法中使用的Page对象。如果我在这个方法中使用Page而不是void作为返回类型,那么我得到的错误是,这个方法有一个错误的返回类型
那么,有没有办法为上述方法定义返回类型?请提供帮助。命令结构不是为这样使用而设计的。但是您可以只定义一个公共方法,而不是在代码中手动调用命令 您的方法:
public Page ChangeMasterItem(string selecteditem)
{
switch (seleteditem)
{
case "ABC":
return new TestDrillPageDetail("Test Drill Page Detail 1");
// and so on ...
}
}
您可以这样定义命令:
public ICommand MasterItemSelectedCommand => new Command<string>((selecteditem) =>
{
var mypage = ChangeMasterItem(selecteditem);
// You can use mypage now if you want
});
谢谢你的解决方案。但在这种情况下,定义命令的意义是什么。因为它是一个公共方法,我在单击按钮时直接调用它。在这种情况下,您不需要命令。为了完整起见,我刚刚添加了它,因为您在问题中还定义了一个命令。您也可以只使用命令并在命令操作中设置详细信息页面(这样您就不需要按钮单击事件),也可以不使用命令我添加了命令,因为我想通过MVVM的方式来完成。现在,如果无法为与命令关联的方法定义返回类型,那么这是您建议的一个好选项,但您可以使用命令。您不需要返回类型。只需在命令操作中执行所需的操作。或者我误解了什么?是的,我需要一个返回类型,因为我必须只在代码隐藏中设置“this.Detail”,而不是在VM中。原因是我不想给我的虚拟机任何页面引用。
public ICommand MasterItemSelectedCommand => new Command<string>((selecteditem) =>
{
var mypage = ChangeMasterItem(selecteditem);
// You can use mypage now if you want
});
this.Detail = ViewModel.ChangeMasterItem(seleteditem);