Программирование в вопросах и ответах
Проблема скорее всего в привязке. В ListBox не прибавляются элементы. Вот сам клас:public partial class MainWindow : Window { private Window1 wd; private MyList MyData; public MainWindow() { InitializeComponent(); MyData = new MyList(); MyData.Add(new Person("1", "2", "3", null)); MyData.Add(new Person("1", "2", "3", null)); } } class MyList : ObservableCollection { public ObservableCollection MyData; public MyList() : base() { MyData = new ObservableCollection(); MyData.Add(new Person("1", "2", "3", null)); MyData.Add(new Person("1", "2", "3", null)); } } class Person { public string Name { get; set; } public string Surname { get; set; } public string Country { get; set; } public Image Img { get; set; } public Person(string name, string surname, string country, Image img) { Name = name; Surname = surname; Country = country; Img = img; } public Person() { }} Ответ Где вы находите такие способы создания коллекций?)Ну, исправим то что есть: Объект создается в ресурсе окна, соответственно добавление элементов в коллекцию должно происходить в конструкторе этого объекта. То что вы добавляете элементы в *.cs файле, это не совсем то, так как это не тот объект к которому вы привязываетесь.(привязка идет к объекту созданному в ресурсе).Идем дальше. Раз уж вы решили создать коллекцию унаследовавшись от нее самой, то добавляйте элементы унаследованным методом:public class MyList : ObservableCollection { public MyList() : base() { Add(new Person("1", "2", "3", null)); Add(new Person("1", "2", "3", null)); } } В принципе все, должно работать. Пару замечаний по вашему коду: public ObservableCollection MyData; Если вы будете привязываться к MyData то привязка не пройдет. Привязка работает только со свойствами, т.е. должно выглядеть так:public ObservableCollection MyData { get; set; } Как это делается обычноВ проекте должен быть класс VM, реализующий интерфейс INotifyPropertyChanged. Этот класс будет являться DataContext-oм для вашего окна(как задать DataContext). В этом классе и объявить список:public class MainVM : INotifyPropertyChanged { public ObservableCollection MyList { get; set; } public MainVM() { MyList = new ObservableCollection(); MyList.Add(new Person("1", "2", "3", null)); MyList.Add(new Person("1", "2", "3", null)); } //--------------------- //реализация интерфейса } //--------------------- После таких манипуляций, использовать привязку одно удовольствие:
Где вы находите такие способы создания коллекций?)Ну, исправим то что есть: Объект создается в ресурсе окна, соответственно добавление элементов в коллекцию должно происходить в конструкторе этого объекта. То что вы добавляете элементы в *.cs файле, это не совсем то, так как это не тот объект к которому вы привязываетесь.(привязка идет к объекту созданному в ресурсе).Идем дальше. Раз уж вы решили создать коллекцию унаследовавшись от нее самой, то добавляйте элементы унаследованным методом:public class MyList : ObservableCollection { public MyList() : base() { Add(new Person("1", "2", "3", null)); Add(new Person("1", "2", "3", null)); } } В принципе все, должно работать. Пару замечаний по вашему коду: public ObservableCollection MyData; Если вы будете привязываться к MyData то привязка не пройдет. Привязка работает только со свойствами, т.е. должно выглядеть так:public ObservableCollection MyData { get; set; } Как это делается обычноВ проекте должен быть класс VM, реализующий интерфейс INotifyPropertyChanged. Этот класс будет являться DataContext-oм для вашего окна(как задать DataContext). В этом классе и объявить список:public class MainVM : INotifyPropertyChanged { public ObservableCollection MyList { get; set; } public MainVM() { MyList = new ObservableCollection(); MyList.Add(new Person("1", "2", "3", null)); MyList.Add(new Person("1", "2", "3", null)); } //--------------------- //реализация интерфейса } //--------------------- После таких манипуляций, использовать привязку одно удовольствие:
Комментариев нет:
Отправить комментарий