VSTOでOutlookにサイドバーとしてWPFコントロールを付ける。

Outlookにサイドバーみたいなものを付けたい。

さっそくVSTOのプロジェクトを作成し、新しい項目からそれらしきモノを探してみる。

Outlookフォーム領域

これじゃないかと選択したのがOutlookフォーム領域。以下参考記事。
MSDNの記事

ちょっと古いですがエヴァンジェリスト松崎さんの記事

メールの送信まで解説

Part1,2でフォーム領域について一通り解説

一通り何ができるかわかったところで結論としては「これじゃできねぇ」でしたorz
フォーム領域はその名の通り、フォーム入力時に使用できるカスタム領域であって、エクスプローラ領域には踏み込めない。

カスタム作業領域

まあ、最悪アンマネージコード使ってでもやってやらぁの意気で探してたら、以外に簡単な方法が提供されてました。てゆうか、僕は全然WindowsFormの事とか知らないから実はこっちに行き着く方が普通は早いのかも。
以下参考記事。
MSDNの記事

カスタム作業領域の作り方をわかりやすく解説

WinFormのUserControlを作成し、それをOutlookExplorerオブジェクトのCustomTaskPanesに追加してしまえば、新しいCustomTaskPaneとしてエクスプローラ画面に追加してくれる。

// OutlookのAddInの基本クラス。
public partial class ThisAddIn {
    Microsoft.Office.Tools.CustomTaskPane taskPane;
    Outlook.Explorer explorer;
    private void ThisAddIn_Startup(object sender, System.EventArgs e) {
        // OutlookのExplorerオブジェクトを取得し、新しいCutomTaskPaneとしてUserControlを追加
        explorer = this.Application.ActiveExplorer();
        taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(new TaskPanel(), " New Task Title", explorer);
    }
}

// TaskPanelはユーザーコントロールとして作られている
public partial class TaskPanel : UserControl {
  // 略
}

WPFのコントロールを付ける

カスタム作業領域を作成する時にWinFormのUserControlを作成しているため話は簡単だ。
そこにWPFのコントロールをホストしてしまえばいいだけである。
デザイナで行う事なので詳細は割愛する。

次回はWPFVSTOのやりとりについて見て行こう