FrameworkElement.DataContext Proprietà

Definizione

Ottiene o imposta il contesto dati per un FrameworkElement. Un uso comune di un contesto dati è quando un FrameworkElement usa l'estensione di markup {Binding} e partecipa al data binding.

C#
public object DataContext { get; set; }
XAML
<frameworkElement DataContext="binding"/>
- or -
<frameworkElement DataContext="{StaticResource keyedObject}"/>

Valore della proprietà

Object

Oggetto da usare come contesto dei dati.

Esempio

Questo esempio imposta DataContext direttamente su un'istanza di una classe personalizzata.

Se usi C++/WinRT e l'estensione di markup {Binding} , userai la proprietà FrameworkElement::D ataContext e BindableAttribute. Se usi l'estensione di markup {x:Bind} , non userai FrameworkElement::D ataContextBindableAttribute.

Per altre informazioni sull'esempio di codice C++/WinRT riportato di seguito (ad esempio, come usare l'elenco .idl di file e cosa fare con i file di implementazione generati), vedi Controlli XAML; binding a una proprietà C++/WinRT.

C#
// 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;

Commenti

Il contesto dei dati è un concetto in cui gli oggetti possono ereditare le informazioni di data binding da oggetti padre successivi in una gerarchia di relazioni tra oggetti.

L'aspetto più importante del contesto dati è l'origine dati usata per il data binding. Un uso tipico di DataContext consiste nell'impostarlo direttamente su un oggetto origine dati. Questa origine dati può essere un'istanza di una classe, ad esempio un oggetto business. In alternativa, è possibile creare un'origine dati come raccolta osservabile, in modo che il contesto dei dati consenta di rilevare le modifiche nella raccolta di backup. Se l'origine dati è definita da una libreria inclusa anche nel progetto, l'impostazione di un oggetto DataContext viene spesso combinata con la creazione di un'istanza dell'origine dati come risorsa con chiave in resourceDictionary e quindi l'impostazione di DataContext in XAML con un riferimento all'estensione di markup {StaticResource} .

Un'altra tecnica per l'impostazione di DataContext consiste nell'aggiungerlo alla radice dell'albero degli oggetti di runtime, come parte della logica di inizializzazione dell'app, subito dopo aver chiamato InitializeComponent. Questa tecnica è illustrata in Panoramica del data binding.

Oltre a specificare l'origine, un contesto dati può anche archiviare caratteristiche aggiuntive di una dichiarazione di associazione, ad esempio un percorso nell'origine dati.

L'impostazione di un oggetto DataContext è utile per impostare più associazioni di proprietà diverse sullo stesso oggetto su un contesto di dati condiviso. È tuttavia possibile che un Oggetto DataContext non sia definito e che tutte le qualifiche di associazione necessarie esistano in istruzioni di associazione separate.

La modalità di implementazione dell'origine dati dell'oggetto varia a seconda dei requisiti e del linguaggio di programmazione. Per altre info, vedi Informazioni approfondite sul data binding.

Uno scenario comune per i contesti di dati C# e Microsoft Visual Basic consiste nell'usare un oggetto business clr definito da CLR che supporta la notifica delle modifiche. Per un oggetto business, la classe personalizzata usata come contesto dati implementa in genere INotifyPropertyChanged, in modo che gli aggiornamenti ai dati possano aggiornare un'associazione unidirezionale o bidirezionale. Se l'origine dati è una raccolta di oggetti business, può implementare INotifyCollectionChanged più il supporto dell'elenco (IList o List) o derivare da ObservableCollection.

Si applica a

Prodotto Versioni
WinRT Build 10240, Build 10586, Build 14383, Build 15063, Build 16299, Build 17134, Build 17763, Build 18362, Build 19041, Build 20348, Build 22000, Build 22621, Build 26100

Vedi anche