Orcas でみる VSTO の新機能 【Word コンテントコントロールのデータバインド】
【環境】
Microsoft Office 2007 Enterprise
Visual Studio Codename Orcas (March 2007 CTP)
Orcas でみる VSTO の新機能
- リボンのデザインサポート
- Word コンテントコントロールのデータバインド
- ClickOnce
- Outlook フォーム リージョン (ここから Beta 1 を使っています、、、)
- VBA との相互運用
- SharePoint ワークフローの作成と配置の自動化
こんにちは。
今日は、Orcas による VSTO の新機能として、コンテントコントロール (Content Control) について説明しましょう。
既に the Microsoft Office system 2007 で開発されている方はご存知と思いますが、Word には、さまざまなデータバインドがおこなえる Content Control がついています。このコントロール、大変すばらしいのですが、欠点は、データバインドをおこなうことが UI でできないという点です。 ですから、セミナーなどでお見せしている デモ においても、Open XML を直接編集するという非常に強引な手段によってデータバインドをおこなっていました。(尚、新しい Syste,.IO.Packaging によるプログラミングをおこなえば、意味的にデータバインドを設定することが可能です。ただし、「コーディング」が必要であったわけです。)
Orcas では、この待望の仕組み (Content Control のデータバインドを UI でおこなう仕組み) が組み込まれています。
では、早速使っていきましょう。
-
Orcas で、[Visual C#] - [Office] - [2007] の [Word Document] プロジェクトを作成します。
-
Word 文書中をデザインします。今回は表を作成し、製品番号、製品名、価格 の欄を設けます。
-
[Data] - [Add New Data Source] を選択し、データベースに接続をおこない、データソースを表示します。(下図)

-
ドロップダウンリストから、[RichTextContentControl]、[ComboBoxContentControl]、[DatePickerContentControl] などさまざまなコンテンツコントロールを選択できますので、
この中から適当に選択して、表示したいカラムをコンテンツコントロールを挿入する箇所にドラッグアンドドロップします。
-
レコードを移動できるようにリボンを挿入し、[前へ] ボタンと [次へ] ボタンを配置します。(リボンの挿入と作成方法は以前記載しましたので、
こちら を参照してください。)
なお、ここで挿入したリボンは、ドキュメントレベルのリボンになります。(リボンには、アドインとしてアプリケーションに組み込まれるリボンと、ドキュメント (OpenXMLのドキュメント) 内部に挿入されるリボンの2種類があります。)
-
各ボタンをダブルクリックして、クリックイベント処理として、以下を実装しましょう。
private void PrevButton_OnAction(object sender, ControlEventArgs e)
{
Globals.ThisDocument.productTblBindingSource.MovePrevious();
}
private void NextButton_OnAction(object sender, ControlEventArgs e)
{
Globals.ThisDocument.productTblBindingSource.MoveNext();
}
-
では、F5 で実行をおこなってみましょう。
以下の通り表示され、レコードを順番に表示することができます。

デザイナーのツールボックスをみると、[Wrod Controls] としてコンテンツコントロールが挿入できるようになっています。各コンテンツコントロールは、コントロールのプロパティを使って個別にデータとバインドすることもできます。
現時点では、このようにデータベースや Web サービスと連携した機能のみですが、私のブログをみておられる方なら XML Part とコントロールを連携できないかと思われることでしょう。(サンプルソースは、こちら をご参照ください。)
この点については、現時点では、最終形として XML Part とどうバインドするか未定ですが (例:VS の機能として組み込む、追加のツールとしてアドイン可能とする、など)、最終的に何某かの形で機能が使用できるようになるでしょう。
また Cached (データアイランド) もちゃんと使えるようになっています。上記のサンプルに、検索ボタンや更新ボタンを付けてオフラインでの永続化されたソリューションとして作成することが可能です。永続化された Cached のデータは、Microsoft Office 2007 の場合、XML Part として CustomXml フォルダの中に入ります。(これまでの Cached の技術についてご存じない方のために別途ブログに記載しましたので、こちら を参照してください。)
※ CTP (Community Technology Preview) 版は評価のためのプレビュー版であり、製品の正式なリリースではありません。現時点では、いくつかのバグを含んでいます。また、その機能は予告なく変更されることがありますのでご容赦ください。