如何在不覆盖旧项目的情况下将新项目添加到DataGrid?

和彼得罗夫

我知道没有Append,但是我相信这是调用它的正确方法(对吗?)。

现在我有一个ObservableCollection,可以用来向其中添加新项目DataGrid效果很好,但是如果我一次添加10个项目,第二次添加15个项目,则最终得到15个项目,而不是25个。基本上,该集合会覆盖旧集合中的每个集合。

可以遍历旧集合并在包含新集合后再次添加它,但这似乎很愚蠢。我确信必须有另一种方法来做到这一点。

这是我的内部集合里面的类的样子(我从这里使用了代码)

public class ProxiesList
{

    public string proxy { get; set; }
    public string proxySource { get; set; }
    public bool proxyUsed { get; set; }
    public bool toUse { get; set; }
    public string working { get; set; }

    ObservableCollection<ProxiesList> GridItems = new ObservableCollection<ProxiesList>();

    public ObservableCollection<ProxiesList> _GridItems
    {
        get
        {
            return GridItems;
        }
    }

    public void addTheData(MainWindow mw, List<string> proxyList)
    {
        foreach (string line in proxyList)
        {
            _GridItems.Add(new ProxiesList //add items to the collection
            {
                proxy = line.Split(';')[0],
                proxySource = line.Split(';')[1],
                proxyUsed = false,
                toUse = true,
                working = "n/a"
            });
        }

        mw.dataGrid1.ItemsSource = GridItems; //bind the collection to the dataGrid1

        GridItems = new ObservableCollection<ProxiesList>(); //create new instance of the observable collection

    }

}
毛圈

ObservableCollection在添加,删除项或刷新整个列表时提供通知。因此,您只需要将您的项目附加ObservableCollection<ProxiesList>您的数据网格所绑定到的同一实例

因此,基本上,您可以将其设置mw.dataGrid1.ItemsSourceObservableCollection<ProxiesList>Binding在Xaml中使用

您无需在mw.dataGrid1.ItemsSource每次添加项目时进行设置

GridItems = new ObservableCollection<ProxiesList>(); //create new instance of the observable collection

此行导致了您的问题,因为它创建了该集合的新实例,因此每次将项目添加到的新实例时ObservableCollection<ProxiesList>,这意味着它仅包含您刚刚添加的项目。

因此,只需从您的行中删除以下几行 public void addTheData(MainWindow mw, List<string> proxyList)

    mw.dataGrid1.ItemsSource = GridItems; //bind the collection to the dataGrid1

    GridItems = new ObservableCollection<ProxiesList>(); //create new instance of the observable collection

如果您将DataGrid.ItemsSourceXaml中的设置为,_GridItems可以将Xaml中的绑定到您的属性ProxiesListDataContext

以及其他类似属性命名的事情,最好遵循C#命名约定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

不能在不继承旧项目的情况下将项目添加到 arrayList

如何在不滚动到顶部的情况下将新项目添加到recyclerview

如何在不覆盖JFrame的情况下将JPanel图形添加到JFrame

如何在没有提交的情况下将项目从 Github 添加到 Github?

如何在不使用for循环的情况下多次将单个项目添加到arraylist

如何在不将源文件添加到项目的情况下使用其他包中定义的模板?

在不阻塞识别器的情况下将项目添加到 UIView

如何在不覆盖样式类的情况下将类属性添加到Sitecore MVC链接字段

如何在不覆盖信息的情况下将 hashmap 添加到已经存在的 hashmap 中?

如何在不替换旧文本的情况下将文本添加到TextView?

如何在不使用IDE的情况下将Maven pom.xml添加到现有项目?

如何在不使用Storyboard segue的情况下从单独的UIViewController将项目添加到UICollectionViewController?

如何在不进入下一行的情况下将更多项目添加到列表?

如何在不中断编号的情况下将代码添加到数字列表的项目中?

如何在不检查工作区的情况下将android库添加到eclipse项目?

如何在不使用gradle或Maven或Eclipse的情况下将jar文件添加到Java项目

如何在不添加子列表的情况下将键值对添加到列表?

如何在不更改其他行的情况下将 TableRow 添加到 TableLayout

如何在不擦除数据的情况下将存储添加到VMWare vSphere

如何在不弹出的情况下将CopyWebpackPlugin添加到create-react-app?

如何在不更改基类的情况下将行为添加到类的实例

如何在不绘制原始数据的情况下将图例添加到ggplot?

如何在不增加或减少php的情况下将数值添加到值

如何在程序不返回InvocationTargetException的情况下将节点添加到GridPane?

如何在不更改COM +类ID的情况下将方法添加到类

VS Express 2013-默认情况下,将.h文件添加到每个新项目中,以便位于同一目录中?

如何在不删除Java中任何旧数据的情况下将新信息添加到.txt文件

如何在不创建覆盖IsEnabledCore的新类的情况下启用添加到Richtextbox的按钮?

如何在不覆盖的情况下添加到数组(从读取行和爆炸起)PHP