Как привязать значение вложенной наблюдаемой коллекции к списку - PullRequest
0 голосов
/ 27 июня 2018

Я хочу отобразить все имена учеников в виде списка. Я сделал, как показано ниже. Но это показывает пустой просмотр списка.

 public  class ClassRoomDetailsList
{
    public int ClassRoomID { get; set; }
    public ObservableCollection<StudentsList> StudentsArray { get; set; }
}

public class StudentsList
{
    public string StudentName{ get; set; }

}


public static ObservableCollection<ClassRoomDetailsList> _ClassRoomDetailsList = new ObservableCollection<ClassRoomDetailsList>();
//assigned values to observable collection here
list1.ItemsSource = AppGlobals._ClassRoomDetailsList;

 <ListView x:Name="list1" HorizontalAlignment="Right"  Height="500" Width="500"  Background="Violet" >
           <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical">
                     <Border Background="#b9fbc9" VerticalAlignment="Center">
                     <TextBlock Text="{Binding  StudentName}" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center"    Foreground="Black"/>
                     </Border>
                     </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

Я проверил, что _ClassRoomDetailsList правильно содержит имя студента. Да, это. Тогда в чем проблема для пустого списка?

1 Ответ

0 голосов
/ 28 июня 2018

_ClassRoomDetailsList является объектом ObservableCollection<ClassRoomDetailsList>, чьи дочерние элементы являются ClassRoomDetailsList объектом, но ваш ListView хочет связать StudentName объекта *1005*, поэтому ваш ListView.ItemsSource должен быть объектом ObservableCollection<StudentsList>.

Ваша привязка в DataTemplate ListView должна связывать свойства объекта класса T в ObservableCollection <<strong> T >. Вот простой пример базы ваших моделей.

public MainPage()
{
    this.InitializeComponent();
    ObservableCollection<StudentsList> studentsLists = new ObservableCollection<StudentsList>();
    studentsLists.Add(new StudentsList() { StudentName = "first student" });
    studentsLists.Add(new StudentsList() { StudentName = "second student" });
    studentsLists.Add(new StudentsList() { StudentName = "third student" });
    studentsLists.Add(new StudentsList() { StudentName = "fourth student" });
    studentsLists.Add(new StudentsList() { StudentName = "fifth student" });

    _ClassRoomDetailsList.StudentsArray = studentsLists;

    //assigned values to observable collection here
    list1.ItemsSource = _ClassRoomDetailsList.StudentsArray;
}
public ClassRoomDetailsList _ClassRoomDetailsList = new ClassRoomDetailsList();

Подробнее о привязке в приложении uwp см. В теме Обзор привязки данных .

...