计数WPF列表框中的新项目



我有一个listbox,它的源绑定到XmlDataProvider。以及用于CCD_ 3的源的RSS链接。这一切都正常工作,获取提要并将其显示在listbox中。我在代码中有一个DispatcherTimer,它每10分钟刷新一次XmlDataProvider源代码。现在,我只需要计算每个刷新间隔中添加到ListBox中的新项目。

有人能帮我实现一种方法,在每个刷新时间间隔中只计算列表框中添加的新项目吗?请帮忙。

我同意"在添加项目之前对其进行列表计数。–Shujaat Siddiqui",但也可以冷添加Linq或For cicle,以检查项目的ID是否已经存在,并对唯一的ID进行计数。类似于:

int NewItemsCount = 0;
for (int i = 0; i<XmlDataProvider.Items.Count; i++)
{
    bool IsOld=false;
//Loop throu all items in existing
    for (int o =0; i<NewData.Items.Count;i++)
    {
        if(XmlDataProvider.Items[i].ID==NewData.Items[o].ID)
        {
            IsOld = true;
            break;
        }
    }
    if(!IsOld)
    {
         NewItemsCount++;
    }
}

更详细:

当你第一次得到新闻时,你会这样做:

例如,你有一些新闻模型:

class Item
{
    string guid;
    string title;
    ...
}

你会得到这样的消息:

List-news=XML.Deserialize(response.GetResponse())//内存无法记住,但这是使用XML反序列化程序反序列化的服务器的响应

然后用列表新闻填充ListBox,如下所示:

 ListBox.DataSource = news OR using for/forin and ListBox.Items.Add();

现在您可以从服务器获得更新:

List-news=XML.Deserialize(response.GetResponse())//内存无法记住,但这是使用XML反序列化程序反序列化的服务器的响应

现在您应该检查添加了多少新项目(在将新项目添加到ListBox之前),您应该执行以下操作:

a) 如果您使用ListBox.DataSource=新闻

 List<Item> OldNews = (List<Item>)ListBox.DataSource;
 int newUniqueNewsCount = 0;
 foreach ( Item newObj in news ) // loop through new items that you just got as update from server
 {
      bool IsOld = false;
      foreach ( Item obj in OldNews) // loop through old items
      {
           if(obj.guid==objNew) //check if this GUID already existed
           {
               IsOld = true;
               break; //end the looping
           }
      }
      if(!IsOld)
      {
           // If code ran in here then this GUID is new and then this news is new so +1
           newUniqueNewsCount ++;
      }
 }

运行此代码后,您可以使用newUniqueNewsCount在UI中显示新项目计数。

相关内容

  • 没有找到相关文章

最新更新