我有一个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中显示新项目计数。