¿Cómo entiendo el enlace WPF? DisplayMemberBinding vs DataTemplate GridView Binding?

Estoy muy confundido con el enlace en WPF. Por ejemplo, el enlace con un ListView se puede hacer mediante DisplayMemberBinding pero también se puede hacer usando Plantilla de datos en vista de cuadrícula.

¿Cuándo uso un enfoque sobre el otro?

¿Puede alguien sugerir cómo entender el enlace?

preguntado el 12 de junio de 12 a las 13:06

2 Respuestas

DataTemplates permitir estructuras complejas que posiblemente muestren varios miembros, DisplayMemberBinding solo muestra un miembro del objeto Eso es todo, lea sobre el enlace de datos en MSDN. También vea el Descripción general de la plantilla de datos.

Respondido el 12 de junio de 12 a las 14:06

Si utiliza DisplayMemberBinding a Textblock se usa Si necesita usar otro elemento de la interfaz de usuario, entonces necesita usar un DataTemplate.

De la documentación Propiedad GridViewColumn.DisplayMemberBinding

Las siguientes propiedades se utilizan para definir el contenido y el estilo de una celda de columna y se enumeran aquí en orden de prioridad, de mayor a menor:

DisplayMemberBinding

Plantilla de celda

Selector de plantilla de celda

Respondido el 12 de junio de 12 a las 14:06

¿Está usted seguro de eso? Supongo que solo hace eso para cadenas. - media pensión

Llama ToString() en otros tipos para ponerlos en un string - DisplayMemberPath solo mostrará un miembro, y solo lo mostrará como un string. Como dice Blam, si necesita usar otro elemento de la interfaz de usuario, entonces necesita usar un DataTemplate - pete el pagano-jerbo

@HB Que yo sepa, Gridview no tiene los distintos tipos de columnas como DataGrid. - paparazzo

@Blam: Lo que quise decir es que también podría arrojar a ese miembro en un ContentPresenter y "a ver qué pasa", si hay un DataTemplate asociado con el tipo de propiedad que podría usarse implícitamente. Las cadenas solo se mostrarían en un TextBlock. - media pensión

@HB Solo puedo comentar sobre mi experiencia y no sobre lo que podría hacer. Mi experiencia es que Gridview no respeta las plantillas externas. Tal vez lo estoy haciendo mal. - paparazzo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.