FrameworkElement.DataContext Propiedad

Definición

Obtiene o establece el contexto de datos de un FrameworkElement. Un uso común de un contexto de datos es cuando frameworkElement usa la extensión de marcado {Binding} y participa en el enlace de datos.

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

Valor de propiedad

Object

Objeto que se va a usar como contexto de datos.

Ejemplos

En este ejemplo se establece DataContext directamente en una instancia de una clase personalizada.

Si usaS C++/WinRT y la extensión de marcado {Binding} , usarás la propiedad FrameworkElement::D ataContext y BindableAttribute. Si usa la extensión de marcado {x:Bind} , no usará FrameworkElement::D ataContext ni BindableAttribute.

Para obtener más información sobre el ejemplo de código de C++/WinRT siguiente (por ejemplo, cómo usar la .idl lista de archivos y qué hacer con los archivos de implementación que genera), consulta Controles XAML; enlazar a una propiedad 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;

Comentarios

El contexto de datos es un concepto en el que los objetos pueden heredar información de enlace de datos de objetos primarios sucesivos en una jerarquía de relaciones de objetos.

El aspecto más importante del contexto de datos es el origen de datos que se usa para el enlace de datos. Un uso típico de DataContext es establecerlo directamente en un objeto de origen de datos. Este origen de datos puede ser una instancia de una clase como un objeto de negocio. O bien, puede crear un origen de datos como una colección observable, de modo que el contexto de datos permita detectar cambios en la colección de respaldo. Si el origen de datos se define mediante una biblioteca que también se incluye en el proyecto, el establecimiento de dataContext se combina a menudo con la creación de instancias del origen de datos como un recurso con clave en un ResourceDictionary y, a continuación, se establece DataContext en XAML con una referencia de extensión de marcado {StaticResource} .

Otra técnica para establecer DataContext es agregarla a la raíz del árbol de objetos en tiempo de ejecución, como parte de la lógica de inicialización de la aplicación, justo después de llamar a InitializeComponent. Esta técnica se muestra en Introducción al enlace de datos.

Además de especificar el origen, un contexto de datos también puede almacenar características adicionales de una declaración de enlace, como una ruta de acceso al origen de datos.

Establecer un DataContext es conveniente para establecer varios enlaces de propiedades diferentes en el mismo objeto en un contexto de datos compartido. Sin embargo, es válido que dataContext no esté definido y que todas las calificaciones de enlace necesarias existan en instrucciones de enlace independientes.

La forma de implementar el origen de datos de objeto varía en función de los requisitos y del lenguaje de programación. Para obtener más información, consulta el tema Enlace de datos en profundidad.

Un escenario común para los contextos de datos de C# y Microsoft Visual Basic es usar un objeto empresarial definido por CLR que admita la notificación de cambios. Para un objeto de negocio, la clase personalizada que se usa como contexto de datos normalmente implementa INotifyPropertyChanged, de modo que las actualizaciones de los datos puedan actualizar un enlace unidireccional o bidireccional. Si el origen de datos es una colección de objetos empresariales, puede implementar INotifyCollectionChanged más compatibilidad con listas (IList o List) o derivar de ObservableCollection.

Se aplica a

Producto Versiones
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

Consulte también