繁体   English   中英

将项目源设置为null后,数据网格未更新

[英]Data grid is not updating after setting item source to null

我有一个绑定到可观察集合的数据网格,当我更新可观察集合中的项目时,数据网格未更新。 我知道我通知不会触发,因为我不只是更改集合的属性,所以我试图将项目源设置为null并在检查更新后重新绑定它,但这是行不通的。 我也尝试了items.refresh无济于事。 我发现唯一可行的方法是重新导航到PendingChanges页面。

了解其工作原理。 我有一个包含页面的窗口,底部是框架的窗口,当您单击按钮时,它导航到包含数据网格的窗口(待更改)

包含数据网格的类和页面

public PendingChanges(page blahh)
{
   InitializeComponent();
   Datagrid.ItemsSource = obvs_collection;
}
public string GetPendingChanges()
{
    PopulatePendingChanges();
    return NumberOfItemsPending + " items checked out";
}
private void PopulateCollection()
{
    //obvs_collection.Clear();  this doesn't work
    //Datagrid.ItemsSource = null this doesn't work 
    foreach (var path in localPath)
    {
        obvs_collection.Add(new PendingItem()
        {
            ID = blah.Replace("\\",""),
            Path = path.ToString()
        });
    }
}

使用数据网格在页面中构成框架的类/页面

private void CheckChanges()
{
    _pendingChangesPage = new PendingChanges(blah);
    PendingChangesTb.Text = _pendingChangesPage.GetPendingChanges();
}

更新任何数据源以反映其更改时,需要使用其.Refersh()函数刷新网格。

dataGrid.Items.Refresh();

我认为您可能只需要一个实例,而不是每次检查更改时都创建一个新实例。

尝试这个:

PendingChanges _pendingChangesPage;

public PendingChanges(page blahh)
{
   InitializeComponent();
   Datagrid.ItemsSource = obvs_collection;
   _pendingChangesPage = new PendingChanges(blah);
}

private void CheckChanges()
{
    PendingChangesTb.Text = _pendingChangesPage.GetPendingChanges();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM