在CollectionViewSource的事件处理程序中e和item的目的是什么?过滤事件

本文关键字:是什么 过滤 事件 item 事件处理 CollectionViewSource 程序 | 更新日期: 2023-09-27 17:51:10

下面是一个过滤逻辑CollectionViewSource。过滤事件。我有以下疑问

1。什么是e和item,我们还没有声明它们仍然可以使用。怎么使用?

2。AuctionItem product = e.Item as AuctionItem做什么?as关键字在这里做什么类型转换?

private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
{
AuctionItem product = e.Item as AuctionItem;
if (product != null)
{
    // Filter out products with price 25 or above 
    if (product.CurrentPrice < 25)
    {
        e.Accepted = true;
    }
    else
    {
        e.Accepted = false;
    }
}

}

以下是完整代码的MSDN链接:http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.filter(v=vs.110).aspx

在CollectionViewSource的事件处理程序中e和item的目的是什么?过滤事件

  1. 变量e由框架实例化,而不是由您实例化。这就是为什么你不需要创造它。对于要过滤的每个项,您将被回调。Item是测试过滤器的对象(参见http://msdn.microsoft.com/en-us/library/system.windows.data.filtereventargs.item(v=vs.90).aspx)。这是你的数据——在你的例子中是AuctionItem。

  2. as是一个强制转换操作符,如果不可能强制转换,则计算为null,而不是抛出异常(参见http://msdn.microsoft.com/en-us/library/cscsdfbt.aspx)。在您的例子中,它将e.Item转换为AuctionItem。如果e.Item不是AuctionItem,你的产品变量将是null