我正在尝试将异步方法传递给xamarin形式的命令。在microsoft docs中,示例代码随lambda表达式一起提供。因为我在C#领域还很陌生,所以我想看看它的显式形式以清楚地理解概念:
带有lambda的代码:
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
NavigateCommand = new Command<Type>(
async (Type pageType) =>
{
Page page = (Page)Activator.CreateInstance(pageType);
await Navigation.PushAsync(page);
});
BindingContext = this;
}
public ICommand NavigateCommand { private set; get; }
}
所以,我的问题是如何在不使用lambda的情况下重新键入NavigationCommand。我认为这对初学者会更有利。非常感谢您的回复。
您可以检查以下代码
NavigateCommand = new Command(() => TestCommand(the property pageType here));
async void TestCommand(Type pageType)
{
Page page = (Page)Activator.CreateInstance(pageType);
await Navigation.PushAsync(page);
}
如果您的方法没有参数,则可以像]进行初始化>
NavigateCommand = new Command(TestCommand);
async void TestCommand() { //... }