He tratado de enlazar los datos en el ListView de control:

<ListView Margin="8" Height="400" Width="650" 
    ItemsSource="{Binding Path=MyData}">
    <ListView.View>
         <GridView>
             <GridViewColumn Header="ID" Width="Auto" 
                  DisplayMemberBinding="Binding Path=ID}" >
             </GridViewColumn>
             <GridViewColumn DisplayMemberBinding="{Binding Path=Name}" 
                  Header="Name" Width="100"/>
             <GridViewColumn DisplayMemberBinding="{Binding Path=Price}" 
                  Header="Price" Width="100"/>
             <GridViewColumn DisplayMemberBinding="{Binding Path=Author}" 
                  Header="Author" Width="100"/>
             <GridViewColumn DisplayMemberBinding="{Binding Path=Catalog}" 
                  Header="Catalog" Width="100"/>
           </GridView>
    </ListView.View>
</ListView>

  ObservableCollection<TableInfo> _MyData
  public ObservableCollection<TableInfo> MyData{ get; set; }

Sin embargo, no se muestra nada en la ventana, pero MyData es un ObservableCollection. ¿Cómo puedo enlazar los datos?

  • Creo que le falta algo de código. Y el uso de dos entra para separar el código y el texto. 😉
  • Estoy suponiendo que el segundo open etiqueta de <ListView.View> no significa estar allí?
  • mistakely he de agregar el segundo open de la etiqueta <ListView.Ver>. editado ahora
  • ¿Cuál es el tipo de MyData? ¿Cómo se puede obligar a su modelo de vista a la vista de encima? Es MyData vacío o nulo por casualidad?
  • MyData es una propiedad disponible en la vista de la Clase
  • ¿Establece el DataContext?
  • yeap … me he fijado datacontext. su ejecución fina y contiene la colección de datos pero no se muestran en el listview
  • Echa un vistazo a el enlace en el Espiar. Es muy bueno que permite esencialmente de depuración de enlaces y encontrar errores en tiempo de ejecución.
  • acaba de implementar la interfaz INotifyPropertyChanged y elevar el propertychanged en la incubadora

InformationsquelleAutor Tanya | 2012-01-11

3 Comentarios

  1. 4

    Tanya,

    Si tu modelo de vista correctamente y si está seguro de que su MyData colección no es nulo o vacío, intente quitar la «Ruta» de las palabras clave de su xaml:

    <ListView Margin="8" Height="400" Width="650" 
        ItemsSource="{Binding Path=MyData}">
        <ListView.View>
             <GridView>
                 <GridViewColumn Header="ID" Width="Auto" 
                      DisplayMemberBinding="{Binding ID}" >
                 </GridViewColumn>
                 <GridViewColumn DisplayMemberBinding="{Binding Name}" 
                      Header="Name" Width="100"/>
                 <GridViewColumn DisplayMemberBinding="{Binding Price}" 
                      Header="Price" Width="100"/>
                 <GridViewColumn DisplayMemberBinding="{Binding Author}" 
                      Header="Author" Width="100"/>
                 <GridViewColumn DisplayMemberBinding="{Binding Catalog}" 
                      Header="Catalog" Width="100"/>
               </GridView>
        </ListView.View>
    </ListView>

    Si esto no ayuda, compruebe la salida de depuración y publicarlo, nos volveremos a pensar en algo.

    • seguro.. pero todavía no funciona..
    • ¿Qué hace su salida a decir?
    • No hay errores generados en la ventana de salida. y también no hay detalles acerca de la unión.
    • Si es así, su MyData colección debe estar vacío. se puede establecer un punto de interrupción en la función de captador de esta propiedad? Lo hace incluso parar allí?
    • sí.. Después de asignar los datos. su no romper la hay en el getter de la propiedad MyData
    • No estoy seguro de lo que quieres decir con esto. Después de la asignación de datos de contexto (su modelo de vista)? Podría publicar el contenido de su formato tableview clase? Además, podría publicar el código donde realmente se unen a la vista de modelo a la vista (todo el constructor o lo que sea que se use)?
    • Con respecto a OnPropertyChanged – debería estado OnPropertyChanged(«MyData»);
    • permítanos continuar esta discusión en el chat

  2. 2

    Su XAML se ve bien para mí.

    Asegúrese de establecer la DataContext correctamente.

    yourView.DataContext = YouViewModel;
    • ya he añadido las líneas en el xaml. pero incluso entonces no mostrar nada yar. Pero la colección que contiene los datos
    • Se puede ver cómo se está estableciendo Datacontext?
    • ` En formato tableview view = nuevo formato tableview(); este.DataContext = view;`
    • Formato tableview es su ViewModel?
    • sí..Es el modelo de vista que contiene el observableCollection
    • Echa un vistazo a la salida de windows. Indica si hay enlaces rotos. Podría ayudar
    • No debería ser en la forma: <UserControl.DataContext> <vm:VIEWMODELNAME /> </UserControl.DataContext> ?

  3. 0

    Cuando el Enlace se evaluó por primera vez, es posible (dependiendo de su código) encontrar el valor null. No avisan en caso de que posteriormente a algo razonable.

    Tratar de asegurarse de que se crea la ObservableCollection en sus clases de costructor y no se sobrescribirá en algún otro lugar. Usted podría alternativly implementar INotifyPropertyChanged y criar a un evento PropertyChanged en te MyData setter.

Dejar respuesta

Please enter your comment!
Please enter your name here