情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

FrameworkElement.DataContext プロパティ

2013/12/12

FrameworkElement がデータ バインディングに関与するときにそのデータ コンテキストを取得または設定します。

Namespace:  System.Windows
アセンブリ:  System.Windows (System.Windows.dll 内)
XAML の XMLNS: xmlns にマップされていません。

public Object DataContext { get; set; }
<frameworkElement DataContext="binding"/>
- or -
<frameworkElement DataContext="{StaticResource keyedObject}"/>

XAML 値

バインド

既存のデータ コンテキスト、またはデータ コンテキスト内のプロパティを参照できるバインド式。「Windows Phone のデータ バインディング」を参照してください。

keyedObject

スコープ内の Resources コレクションに存在するオブジェクトの x:Key 値。通常、これはコード内の任意の場所で定義されたカスタム型のオブジェクト要素インスタンス化であり、ResourceDictionary 内のカスタム XAML 名前空間割り当てが必要です。

プロパティ値

型: System.Object
データ コンテキストとして使用するオブジェクト。

依存関係プロパティの識別子フィールド:  DataContextProperty

データ コンテキストとは、オブジェクトのバインディング指定情報をオブジェクト ツリーの親から継承できるようにすることです。

データ コンテキストでは、バインディングに使用されるデータ ソースが最も重要です。DataContext の最も多い使用方法は、CLR データ ソース オブジェクトに直接設定することです。CLR データ ソースが静的開始データ セットである場合は、クラスである可能性があります。または、ローカルのデータ ソースを、新しい ObservableCollection<T> として作成し、その後でそのコレクションを、WCF Data Services またはその他の方法で更新することもできます。

データ コンテキストは、データ ソース内のパスなど、データ ソース以外のバインドの特性を保持できます。たとえば、XAML で次のオブジェクト ツリーを設定できます。

<StackPanel>
  <StackPanel.Resources>
    <SolidColorBrush Color="Orange" x:Key="MyBrush"/>
  </StackPanel.Resources>
  <StackPanel DataContext="{StaticResource MyBrush}">
    <Rectangle Height="50" Width="50" Fill="{Binding}" />
  </StackPanel>
</StackPanel>

この場合、StackPanel によって定義された DataContext は、Rectangle 子オブジェクトに継承され、Fill プロパティで、他の場合は修飾されない {Binding} ステートメントのデータ コンテキストになります。

DataContext は、バインドを調整してデータ コンテキストを共有する場合に便利です。これを使用すると、多くの場合、バインド ステートメントが詳しくなりすぎないようにすることができます。ただし、DataContext が未定義であること、および必要なすべてのバインド資格が個別のバインド ステートメント内にあることは有効です。

コードでは、データ コンテキストは、CLR オブジェクトに直接設定できます。バインディングは、そのオブジェクトのプロパティに評価されます。

DataContext を、ResourceDictionary 内の XAML オブジェクト要素としてインスタンス化されるカスタム オブジェクトに設定して、StaticResource を使用して参照し、x:Key 値によってリソースを取得することもできます。

DataContext は、1 つのコンテキストを別のコンテキストにバインドするシナリオを使用しやすくための、バインド可能なプロパティですが、このようなシナリオは、あまり使用されません。

次の例は、MyBooks という名前の ListBox とその項目の UI コンテキストを示します。読み込み時に実行される分離コードによって、MyBooks ListBoxDataContext が設定されます。ListBox 項目内のパス式 ({Binding ISBN} および {Binding Title}) は、バインディング SourceDataContext を継承して使用できます。また、ListBox 項目の設定動作を使用して、コレクション ソースからデータ項目をバインドできます。


<StackPanel>
    <ListBox x:Name="MyBooks" Margin="5" 
             ItemsSource="{Binding Mode=OneWay}" 
             FontSize="{StaticResource PhoneFontSizeMedium}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" >
                    <TextBlock Text="{Binding ISBN}" Margin="0,0,50,0" />
                    <TextBlock Text="{Binding Title}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>



//You can add items to your collection
AllBooks.Add(new Book("4458907683", "Training Your Dog",
    new DateTime(2000, 2, 8), 44.25));
AllBooks.Add(new Book("0446675385", "Good Owners, Great Dogs",
    new DateTime(1999, 9, 1), 15.99));
//Set the data context for the list of books
MyBooks.DataContext = AllBooks;


これは、簡単な例にすぎません。データ バインディングのシナリオにおける DataContext の役割の詳細については、「Windows Phone のデータ バインディング」を参照してください。

Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: