我正在尝试使用界面,但我在这里遇到了一些困难。 我试图将其设置为内容页面后面的xamrin列表视图
public class xxxApiClient : IApi
{
readonly string url = "http://localhost:81/ ";
readonly IHttpService httpService;
public xxxApiClient(IHttpService httpService)
{
this.httpService = httpService;
}
public Task<List<JobsList>> GetJobs() => httpService.Get<List<JobsList>>($"{url}JobsLists");
}
我怎么不确定我如何使用getjobs correclty我正在尝试以下
public partial class JobsPage : ContentPage ,xxxWC.Interface.IApi
{
public xxxWC.Interface.IApi api = new ful;
public JobsPage ()
{
InitializeComponent ();
}
private Task SetItemSource()
. {
. JobListing.ItemsSource = FuelAp
}
如何在方法setItemSource中正确使用上面的get作业?。
我很难理解的是这里。
如何调用我在API Client中创建的基本GetJobs方法。
Task<List<JobsList>> IApi.GetJobs()
{
throw new NotImplementedException();
}
private Task SetItemSource()
{
JobListings.ItemsSource =await GetJobs();
}
}
编辑2 好的,根据以下建议我更新了我的代码
IHttpService httpService;
xxxApiClient _api = newxxxApiClient(httpService);
public JobsPage ()
{
InitializeComponent ();
}
private Task SetItemSource()
{
JobListings.ItemsSource =await GetJobs();
}
但我得到以下错误
严重级代码描述项目文件行抑制状态 错误CS0236字段初始值设定项无法引用非静态 字段,方法或属性 &#39; JobsPage.httpService&#39; xxxCallManagmentAppMobile C:\ Work \ xxxCallAppDev \ XamForms \ xxxCallManagmentApp \ xxxCallManagmentAppMobile \ FuelCallManagmentAppMobile \ Views \ JobsPage.xaml.cs 17 Active
有人可以解释原因吗
编辑3 好吧,我有点进一步,但仍有一些问题。因为没有等待主要方法我如何调用set SetItemSource。
xxxApiClient _api ;
public JobsPage ()
{
InitializeComponent ()
SetItemSource();
}
private async Task SetItemSource()
{
JobListings.ItemsSource = await client.GetJobs();
}
答案 0 :(得分:0)
假设IApi
已映射到xxxApiClient
实施
尝试使用DependencyService解析服务,以便可以在视图中使用
public partial class JobsPage : ContentPage {
public readonly IApi client;
public JobsPage () {
InitializeComponent ();
client = DependencyService.Get<IApi>();
}
private async Task SetItemSource() {
JobListing.ItemsSource = await client.GetJobs();
//...
}
}
至于调用SetItemSource
,它是异步的,所以应该等待。这不能在构造函数中完成。
考虑创建一个可以引发的事件,并使用其处理程序等待所需的行为。
private event EventHandler loadingData = delegate { };
private async void onLoadingData(object sender, Eventargs args) {
JobListing.ItemsSource = await client.GetJobs();
}
完整代码
public partial class JobsPage : ContentPage {
public readonly IApi client;
public JobsPage () {
InitializeComponent ();
//resolving client
client = DependencyService.Get<IApi>();
//subscribing to event
loadingData += onLoadingData;
//raising event
loadingData(this, EventArgs.Empty);
}
private async Task SetItemSource() {
JobListing.ItemsSource = await client.GetJobs();
//...
}
private event EventHandler loadingData = delegate { };
private async void onLoadingData(object sender, Eventargs args) {
JobListing.ItemsSource = await client.GetJobs();
}
}
虽然创建了自定义事件,但您可以轻松地使用视图的事件/事件处理程序。
所有代码实际上都应该存在于视图模型中,然后绑定到绑定上下文中的视图。