微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保我的 ListView 在 Xamarin 中刷新?

如何解决如何确保我的 ListView 在 Xamarin 中刷新?

昨天我得到了一些帮助。我仍然是 C# 的新手,并且使用 Xamarin Forms 和 Prism 作为 MvvM 框架。

我从 API 中提取数据并希望将其显示在 ListView 中,该 API 可以正常工作并正确返回数据。如果我将数据作为列表返回并绑定列表,我必须手动更新 XAML 中的绑定(在运行应用程序时)才能查看行中的数据。

我认为我可能需要更改为 ObservableCollection,但我运气不佳。

我该如何纠正? 我将尝试使用显示我的问题的 gif 更新 OP。

这是我的模型:

    public class OpenWorkOrder
{
    public int ID { get; set; }
    public string WOID { get; set; }
    public string AssetNumber { get; set; }
    public string WorkRequested { get; set; }
    public Nullable<bool> Active { get; set; }
}

这是视图模型:

    private List<OpenWorkOrder> _openWO;

    public List<OpenWorkOrder> Openorders
    {
        get { return _openWO; }
        set { SetProperty(ref _openWO,value); }
    }
        
    private string selectedWO;

    public string SelectedWO { get => selectedWO; set => SetProperty(ref selectedWO,value); }

    private string wOID;

    public string WOID { get => wOID; set => SetProperty(ref wOID,value); }

    private string iD;

    public string ID { get => iD; set => SetProperty(ref iD,value); }

    private string workRequested;

    public string WorkRequested { get => workRequested; set => SetProperty(ref workRequested,value); }
    
    
    
    public async Task<List<OpenWorkOrder>> OpenWO()
    {
        
        var client = new RestClient("apiurl/");
        var request = new RestRequest("Maint/GetopenWorkOrders",Method.GET);
        IRestResponse<List<OpenWorkOrder>> response = await client.ExecuteAsync<List<OpenWorkOrder>>(request);

        if (response.StatusCode.ToString() == "OK")
        {
            return response.Data;
        }

        else
        {
            return null;
        }
        
    public async void OnNavigatedTo(INavigationParameters parameters)
    {
        try { Openorders = await OpenWO();
            Console.WriteLine("Await Called!");
            }
        catch (Exception ex)
            {
            await _dialogService.displayAlertAsync("Exception Handled",ex.ToString(),"OK");
            }
    }
    
    private List<OpenWorkOrder> _openWO;

    public List<OpenWorkOrder> Openorders
    {
        get { return _openWO; }
        set { SetProperty(ref _openWO,value); }
    }
        
        
    public async Task<List<OpenWorkOrder>> OpenWO()
    {
        
        var client = new RestClient("apiurl/");
        var request = new RestRequest("Maint/GetopenWorkOrders","OK");
            }
    }

这是 XAML:

    <StackLayout Orientation="Horizontal">
    <ListView  x:Name="Data" ItemsSource="{Binding Openorders}"
               GroupdisplayBinding="{Binding WOID}"
               SelectionMode="Single">
        <ListView.Behaviors>
        </ListView.Behaviors>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout>
                        <Label Text="{Binding WorkRequested}" HorizontalOptions="Center"/>
                        <Label Text="{Binding WOID}"/>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>

编辑:此处附上 gif

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。