Xamarin Forms Refre sh ListView после редактирования - PullRequest
0 голосов
/ 20 марта 2020

У меня проблема. Я создал базу данных с таблицей на основе следующего класса:

public class Device
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
}

В своем файле App.xaml.cs я делаю следующее:

static List<Device> knownDeviceList;

public App()
{
    InitializeComponent();
    MyHandler();

    MainPage = new NavigationPage(new Page1());
}

public Task MyHandler()
{
    return GetKnownDevices();
}

private async Task Get()
{
    KnownDeviceList = deviceDatabaseController.GetDevice();
}

public static List<KnownDevice> KnownDeviceList
{
    get
    {
        if (knownDeviceList == null)
        {
            knownDeviceList = new List<KnownDevice>();
        }
        return knownDeviceList;
    }
    set
    {
        knownDeviceList = value;
    }
}

После того, как этот код автоматически запустится, я заполнить KnownDeviceList. Теперь на Page1 я сделал ListView с ViewModel, который показывает устройства из KnownDeviceList с использованием привязок. На той же странице я сделал кнопку, чтобы добавить новое устройство, поэтому вы переходите на страницу Page2, используя NavigationPage. Но когда я записываю новое устройство в базу данных, я использую: Navigation.PopToRootAsync(); to go назад, но теперь я хочу, чтобы ListView перефразировал sh и KnownDeviceList, чтобы снова получить устройства из базы данных, поэтому мое новое устройство в ListView.

Как мне этого добиться, потому что я понятия не имею, что делать после того, как я его добавил!?

1 Ответ

0 голосов
/ 20 марта 2020

У меня проблема в том, что вы меняете коллекцию. Но не уведомляя об этом пользовательский интерфейс.

List<> не будет уведомлять об изменении коллекции самостоятельно. Где ObservableCollection уведомляет об изменениях в коллекции, например Add, Remove и др. c. Следовательно, имя ObservableCollection.

Использование ObservableCollection<KnownDevice> вместо List<KnownDevice> может решить эту проблему.

...