Xamarin 使用不带 lambda 的异步方法形成命令
Xamarin Forms Commands with Async Methods without lambda
我正在尝试将异步方法传递给 xamarin 表单中的命令。在 Microsoft 文档中,示例代码使用 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<Type>((pageType) => TestCommand(pageType));
async void TestCommand(Type pageType)
{
Page page = (Page)Activator.CreateInstance(pageType);
await Navigation.PushAsync(page);
}
如果你的方法没有参数,你可以像
那样初始化它
NavigateCommand = new Command(TestCommand);
async void TestCommand()
{
//...
}
我正在尝试将异步方法传递给 xamarin 表单中的命令。在 Microsoft 文档中,示例代码使用 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<Type>((pageType) => TestCommand(pageType));
async void TestCommand(Type pageType)
{
Page page = (Page)Activator.CreateInstance(pageType);
await Navigation.PushAsync(page);
}
如果你的方法没有参数,你可以像
那样初始化它NavigateCommand = new Command(TestCommand);
async void TestCommand()
{
//...
}