wpf - 独立的 Outlook 应用程序 - 数据绑定(bind)到文件夹邮件的方式?

标签 wpf outlook mapi mailitem

我正在使用 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/

相关文章:

html - 为 Outlook 设计电子邮件签名

c++ - 使用 MAPI 的文件附件的 Unicode 文件名

c# - InvalidOperationException 未处理 - WPF 路径

azure - Outlook API 错误指定的 OData 类型无效 : Microsoft. OutlookServices.FileAttachment

wpf - XAML缩放问题

calendar - 通过 Office 365 REST API 获取 "cancelled"事件

c# - 在 Outlook 上下文菜单操作中读取 "active"邮件消息?

c++ - 如何在没有邮件客户端的情况下使用简单 MAPI?

c# - WPF:如何为内容更改创建路由事件?

c# - 右侧模糊的 WPF 列表框边框