TOC

This article is currently in the process of being translated into Japanese (~92% done).

Data binding:

Hello, bound world!

このチュートリアルを古典的な "Hello, world!" の例から始めたのと同じ様に、WPFのデータバインディングがどんなに簡単なのかを "Hello, bound world!" の例で示します。とりあえず始めましょう。その後で説明します。

<Window x:Class="WpfTutorialSamples.DataBinding.HelloBoundWorldSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="HelloBoundWorldSample" Height="110" Width="280">
    <StackPanel Margin="10">
		<TextBox Name="txtValue" />
		<WrapPanel Margin="0,10">
			<TextBlock Text="Value: " FontWeight="Bold" />
			<TextBlock Text="{Binding Path=Text, ElementName=txtValue}" />
		</WrapPanel>
	</StackPanel>
</Window>

この単純な例は、テキストブロックの値と、テキストボックスの Text プロパティが一致するためにどのように結び付けられているか示します。スクリーンショットによれば、テキストボックスに値を入力すると、自動的にテキストブロックが更新されます。バインドがない場合は、テキストボックスのイベントを監視し、テキストが変更されるごとにテキストブロックを更新する必要があります。しかしデータバインディングが有れば、この接続はマークアップだけで作ることが出来ます。

Binding の規則

全てのマジックは中括弧の間で起こります。これはXAMLにおけるマークアップ拡張のカプセル化です。データバインディングでは、Text プロパティの関連を結びつける記述をするために、Binding 拡張を使います。その最も簡単なフォームであるバインディングは次のように書けます。

{Binding}

これは単純に現在のデータコンテキストを返します(これについては後で述べます)。これは確かに使いやすいですが、一般的な状況では、データコンテキストの他のプロパティとプロパティをバインドするでしょう。そのようなバインディングは次のようになります。

{Binding Path=プロパティ名}

Path はバインドしたいプロパティを設定しますが、しかし Path はバインディングのデフォルトプロパティなので、次のように省略することも出来ます。

{Binding プロパティ名}

多くの異なる例があって、あるものは Path を明示的に定義し、またあるものは省略しています。でも最終的にはあなたが選んで下さい。

バインディングは他に多くのプロパティを持っていて、その一つが、例で使った ElementName です。これは他のUI要素をソースとして直接接続します。バインディングの各プロパティはコンマで区切ります。

{Binding Path=Text, ElementName=txtValue}

まとめ

これはWPFのバインディングの能力のほんの一部です。次の章ではもっと他の部分に入って、データバインディングがどれだけ力強いか見ていきます。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!