FrameworkElement.DataContext Property

Obtient ou définit le contexte de données pour un FrameworkElement lorsqu'il participe à la liaison de données.

Syntaxe


public object DataContext { get; set; }


<frameworkElement DataContext="binding"/>
- or -
<frameworkElement DataContext="{StaticResource keyedObject}"/>
 

XAML Values

binding

Expression de liaison qui peut référencer un contexte de données existant, ou une propriété dans le contexte de données. Voir Démarrage rapide : Liaison de données aux contrôles ou Extension de balisage de liaison.

keyedObject

Valeur x:Key d'un objet qui existe dans une collection Resources de la portée. En général, il s'agit d'une instanciation d'élément objet d'un type personnalisé défini ailleurs dans le code et qui requiert un mappage d'espace de noms XAML personnalisé dans le ResourceDictionary.

Valeur de propriété

Type: System.Object [.NET] | Platform::Object [C++]

L'objet à utiliser comme contexte de données.

Remarques

Le contexte de données est un concept où les objets peuvent hériter des informations de liaison de données à partir des objets parents successifs dans une hiérarchie de relation entre objets.

L'aspect le plus important du contexte de données est la source de données utilisée pour la liaison de données. Une utilisation classique de DataContext est de le définir directement à un objet source de données. Cette source de données peut être une instance d'une classe telle qu'un objet métier. Ou vous pouvez créer une source de données sous forme de collection observable, afin que le contexte de données active la détection des modifications dans la collection de stockage. Si la source de données est définie par une bibliothèque qui est également incluse dans le projet, la définition de DataContext est souvent combinée à l'instanciation de la source de données comme ressource indexée dans ResourceDictionary, puis à la définition de DataContext en XAML avec une référence de StaticResource.

Une autre technique pour définir DataContext consiste à l'ajouter à la racine de l'arborescence d'objets d'exécution, dans le cadre de la logique d'initialisation des applications, juste après avoir appelé InitializeComponent. Cette technique est montrée dans Démarrage rapide : Liaison de données aux contrôles.

En plus de spécifier la source, un contexte de données peut également stocker des caractéristiques supplémentaires d'une déclaration de liaison, par exemple un chemin d'accès à la source de données.

La définition d'un DataContext est pratique pour définir plusieurs liaisons de propriétés individuelles d'un même objet sur un contexte de données partagé. Toutefois, un DataContext peut être indéfini, et toutes les qualifications de liaison nécessaires peuvent exister dans des instructions de liaison distinctes.

Le mode d'implémentation de la source de données d'objet varie en fonction de vos spécifications et de votre langage de programmation. Pour plus d'informations, consultez Vue d’ensemble de la liaison de données, en particulier la section « Liaison aux collections ».

Un scénario courant pour les contextes de données C# et Microsoft Visual Basic est d'utiliser un objet métier CLR qui prend en charge la notification de modifications. Pour un objet métier, la classe personnalisée utilisée comme contexte de données implémente généralement INotifyPropertyChanged, afin que les mises à jour des données puissent mettre à jour une liaison unidirectionnelle ou bidirectionnelle. Si la source de données est une collection d'objets métier, elle peut implémenter INotifyCollectionChanged, ainsi qu'afficher la prise en charge de (IList<T> ou List<T>), ou dériver de ObservableCollection<T>.

Exemples

Cet exemple définit le DataContext directement sur une instance d'une classe personnalisée.


// Create an instance of the MyColors class 
// that implements INotifyPropertyChanged.
MyColors textcolor = new MyColors();

// Brush1 is set to be a SolidColorBrush with the value Red.
textcolor.Brush1 = new SolidColorBrush(Colors.Red);

// Set the DataContext of the TextBox MyTextBox.
MyTextBox.DataContext = textcolor;


Configuration requise

Client minimal pris en charge

Windows 8

Serveur minimal pris en charge

Windows Server 2012

Espace de noms

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Métadonnées

Windows.winmd

Voir aussi

FrameworkElement
Binding
Liaison de données avec XAML
ObservableCollection<T>

 

 

Afficher:
© 2014 Microsoft