CollectionView в .NET MAUI не отображает элементы, возвращаемые из вызова APIC#

Место общения программистов C#
Anonymous
CollectionView в .NET MAUI не отображает элементы, возвращаемые из вызова API

Сообщение Anonymous »

У меня есть существующее приложение, которое мне нужно обновить до MAUI, и возникла небольшая проблема с дисплеем. Я совсем недавно перешел на .NET MAUI и знаю, что близок к тому, чтобы эти присоски отображались, хотя у меня есть небольшая проблема, я просто не знаю, где именно.
Мой вызов API возвращает данные из базы данных, как и ожидалось, хотя элементы в моей ObservableCollection не отображаются в приложении при отладке.
Это моя разметка XAML: Это моя модель представления:

Код: Выделить всё

using SaleBeaconMobile.Models;
using SaleBeaconMobile.Services;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using System.Windows.Input;
using Microsoft.Maui.Controls.Xaml;

namespace SaleBeaconMobile.ViewModels
{
public class MainPageCusViewModel : BaseViewModel
{
private readonly DataService _dataService = new DataService();
private const int PageSize = 10;
private int _currentPage = 0; // Track the current page for loading more data

public ObservableCollection Items { get; }

private bool _isRefreshing;
public bool IsRefreshing
{
get => _isRefreshing;
set
{
_isRefreshing = value;
OnPropertyChanged();
}
}

public ICommand LoadMoreItemsCommand { get; }

public ICommand RefreshCommand => new Command(async () => await DownloadDataAsync());

public MainPageCusViewModel()
{
Items = new ObservableCollection();

// Assign the command to LoadMoreItemsCommand
LoadMoreItemsCommand = new Command(async () => await LoadMoreItemsAsync());

// Trigger initial data load
Task.Run(async () =>  await DownloadDataAsync());
}

// Method to load initial data
public async Task DownloadDataAsync()
{
try
{
IsRefreshing = true;

// Fetch initial data (page 0 or starting page)
var items = await _dataService.GetItemsAsync(0, PageSize);

// Clear existing items and add new items
Items.Clear();

foreach (var item in items)
{
Items.Add(item);
}

// Update the current page
_currentPage = 1; // Assuming pages start from 0
}
catch (Exception ex)
{
// Handle exceptions as needed
}
finally
{
IsRefreshing = false;
}
}

// Method to load more items for pagination or infinite scrolling
public async Task LoadMoreItemsAsync()
{
try
{
if (IsRefreshing)
return; // Prevent re-entry

IsRefreshing = true;

// Fetch more data based on the current page
var items = await _dataService.GetItemsAsync(_currentPage, PageSize);

// Add new items to the existing collection
foreach (var item in items)
{
Items.Add(item);
}

// Increment the current page for the next load
_currentPage++;
}
catch (Exception ex)
{
// Handle exceptions as needed
}
finally
{
IsRefreshing = false;
}
}
}
}
Я знаю, что я довольно близок к этому, поскольку данные извлекаются правильно. Идея состоит в том, чтобы вернуть 10 записей за раз из моего вызова API, все это работает и в почтальоне. в моем старом приложении. В настоящее время я просто не уверен насчет дисплея, не уверен, что это атрибут, который мне не хватает, или что-то в этом роде. До этого я использовал ListView с коллекцией, и все работало, но я думаю, что мне следует обновить все это до .MAUI с новыми атрибутами и функциями, которые идут вместе с этим. В настоящее время я не получаю никаких ошибок.
Спасибо за любые подсказки и помощь! Приветствую, Джо :)

Подробнее здесь: https://stackoverflow.com/questions/786 ... n-api-call

Вернуться в «C#»