次の方法で共有


方法 : バインディング ソースを指定する

更新 : 2007 年 11 月

データ バインディングでは、データの取得元のオブジェクトをバインディング ソース オブジェクトと呼びます。ここでは、バインディング ソースを指定するさまざまな方法について説明します。

使用例

複数のプロパティを共通のソースにバインドする場合は、DataContext プロパティを使用することをお勧めします。このプロパティは、データ バインドされたすべてのプロパティが共通のソースから継承するスコープを確立するための便利な方法を提供します。

次の例では、アプリケーションのルート要素でデータ コンテキストが確立されています。これにより、すべての子要素がデータ コンテキストを継承できます。バインディングのデータは、カスタム データ クラス NetIncome をマッピングで直接参照し、リソース キーとして incomeDataSource を指定することによって取得しています。

コード サンプル全体については、「データ フローの方向およびタイミングの制御のサンプル」を参照してください。

<Grid
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.DirectionalBinding"
  xmlns:c="clr-namespace:SDKSample"
  Name="Page1"
>
  <Grid.Resources>
    <c:NetIncome x:Key="incomeDataSource"/>
    <Style TargetType="{x:Type TextBlock}">
      <Setter Property="Padding" Value="8"/>
    </Style>
    <Style TargetType="{x:Type TextBox}">
      <Setter Property="Margin" Value="0,6,0,0"/>
    </Style>
  </Grid.Resources>
  <Grid.DataContext>
    <Binding Source="{StaticResource incomeDataSource}"/>
  </Grid.DataContext>


...


</Grid>
メモ :

上記の例では、マークアップ内のオブジェクトをインスタンス化し、リソースとして使用しています。コードで既にインスタンス化されているオブジェクトにバインドする場合は、DataContext プロパティをプログラムによって設定する必要があります。例については、「方法 : XAML でデータをバインディング可能にする」を参照してください。

また、個々のバインディングについてソースを明示的に指定する場合は、次のオプションを使用します。これらは、継承されたデータ コンテキストより優先されます。

プロパティ

説明

Source

このプロパティは、ソースをオブジェクトのインスタンスに設定するために使用します。複数のプロパティが同じデータ コンテキストを継承するスコープを確立するという機能が必要でない場合は、Source プロパティを DataContext プロパティの代わりに使用できます。詳細については、Source を参照してください。

RelativeSource

これは、バインディング ターゲットの位置を基準にしてソースを指定する場合に役立ちます。このプロパティを使用する可能性がある一般的なシナリオとしては、ある要素の特定のプロパティを同じ要素の別のプロパティにバインドする場合や、スタイルまたはテンプレートでバインディングを定義する場合などがあります。詳細については、RelativeSource を参照してください。

ElementName

バインド先の要素を表す文字列を指定します。これは、アプリケーションの別の要素のプロパティにバインドする場合に役立ちます。たとえば、Slider を使用してアプリケーション内の別のコントロールの高さを制御する場合や、コントロールの ContentListBox コントロールの SelectedValue プロパティにバインドする場合に指定します。詳細については、ElementName を参照してください。

参照

処理手順

データ フローの方向およびタイミングの制御のサンプル

概念

プロパティ値の継承

データ バインディングの概要

バインディング宣言の概要

参照

FrameworkElement.DataContext

FrameworkContentElement.DataContext

その他の技術情報

データ バインディングのサンプル

データ バインディングに関する「方法」トピック