我正在使用 C# 开发独立的 Outlook WPF 应用程序。我想要做的是让程序监控任何传入邮件的公用文件夹,并通知用户任何邮件到达。
我已经成功地做到了这一点,但我觉得我做这件事的方式很糟糕。本质上,我正在构建 MailItems 的集合,我的程序通过计时器重新扫描公共(public)文件夹以查找任何新邮件。
我想知道的是,有什么方法可以将集合直接绑定(bind)到 MAPIFolder 或 MAPIFolder.Items。我实际上已经能够将 Listbox.ItemsSource 设置为 Outlook.Items 对象,但它只是将 (SysCom.Object) 显示为列表框项目。所以我觉得这是可能的,但我需要一些方法来告诉列表框只显示 MailItems(以及到 Mailitem 的主题字段的适当绑定(bind)路径)。
我想我最终想做的是“镜像”一个 Outlook 文件夹,而不是将其中的项目复制到其他列表对象中。
最佳答案
无法以与绑定(bind)到 recorset 相同的方式进行绑定(bind),但您需要做的是监视该文件夹 (Items.ItemAdd/ItemChange/ItemRemove
) 上的事件。
此外,不要加载文件夹中的所有项目 - 除了效率极低之外,您还可能会超出 RPC channel 限制(由 Exchange 强制执行)。仅加载足够的项目以显示给最终用户。其他项目需要在用户滚动时加载。
在低级别上,Outlook 使用不需要将每个项目作为单独对象打开的 MAPI 表。 .Net 语言不能使用扩展 MAPI,但您可以在 Redemption 中使用 MAPITable
对象(http://www.dimastr.com/redemption/mapitable.htm - 我是它的作者)或在 Outlook 中使用 Table
对象2007 年及以后 ( http://msdn.microsoft.com/en-us/library/office/bb176406(v=office.12).aspx )。
关于wpf - 独立的 Outlook 应用程序 - 数据绑定(bind)到文件夹邮件的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11995090/