2009-04-29 16 views
5

Duplicado de:Diferencia betwwen DataContext y ItemSource en WPF

Why are DataContext and ItemsSource not redundant?


En WPF podemos asignar lista de elemento de cuadro combinado de 2 maneras

//CODE #1 
//WPF 
<ComboBox name="cmbItems" ItemSource={Binding} /> 

//C# 
cmbItems.DataContext = someList; 

de otra manera, asignar directamente itemsource

//CODE #2 
//WPF 
<ComboBox name="cmbItems" ItemSource={Binding} /> 
//C# 
cmbItems. ItemSource = someList; 

sirve para el propósito, pero ¿cuál es la diferencia en el fragmento de arriba? y que es bueno usar?

+0

posible duplicado de [¿Quién tiene la mejor respuesta de por qué DataContext y ItemsSource no son redundantes?] (Http://stackoverflow.com/questions/793340/who-has-the-best-answer-for-why- datacontext-and-itemssource-are-not-redundant) –

Respuesta

9

DataContext se utiliza sobre todo en los formularios, controles, etc.

Un ItemSource es una ruta relativa de hacer de enlace de datos en que DataContext.

Por ejemplo, cuando crea un formulario para editar los detalles de Persona, el DataContext sería Person y cada uno de los controles del formulario se vinculará a una propiedad separada en ese objeto, por ejemplo, Nombre, Fecha de nacimiento, etc.

2

En el segundo ejemplo, puede omitir el ItemsSource = {Binding} .. Está configurando el ItemsSource directamente a un valor en su código detrás .. No necesitará un enlace aquí. En el primer ejemplo, se establece el DataContext, y utiliza una unión para recuperar de nuevo desde el DataContext ..

Pero en realidad no importa .. para ambos métodos funcionan bien ...

utilizo el siguiente pulgar de regla: configúrelo en el código detrás, si tengo la colección disponible. Configúrelo en algún tipo de modo de enlace, si necesito transformar la colección, para que pueda usar un IValueConverter para hacer el trabajo.

Cuestiones relacionadas