【问题标题】:Xamarin Forms Refresh ListView after editXamarin Forms 编辑后刷新 ListView
【发布时间】:2020-03-19 23:40:55
【问题描述】:

我有问题。我基于以下类创建了一个包含表的数据库:

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 中,我创建了一个带有 ViewModel 的 ListView,它使用绑定显示来自 KnownDeviceList 的设备。在同一页面上,我制作了一个添加新设备的按钮,因此它使用NavigationPage 将您带到第2 页。但是当我将新设备写入数据库时​​,我使用:Navigation.PopToRootAsync(); 返回,但现在我希望 ListView 刷新并 KnownDeviceList 再次从数据库中获取设备,所以我的新设备在 ListView 中。

我怎样才能做到这一点,因为我添加后不知道该怎么做!?

【问题讨论】:

  • 使用MessagingCenter从Page2发送消息到Page1,告诉它刷新设备列表
  • 你最好使用ObservableCollection而不是List,它实现了接口INotifyPropertyChanged
  • 请添加您的按钮点击查询。还有你在哪里初始化列表?

标签: c# xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

我的问题是您正在更改集合。但没有通知用户界面。

List&lt;&gt; 不会自行通知集合更改。 ObservableCollection 确实通知集合更改,例如 AddRemove 等。因此名称为 ObservableCollection

使用ObservableCollection&lt;KnownDevice&gt; 代替List&lt;KnownDevice&gt; 可以解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多