Страницы

Поиск по вопросам

пятница, 6 марта 2020 г.

Не могу разобраться ObservableCollection с ListBox

#c_sharp #net #wpf #binding


Проблема скорее всего в привязке. В ListBox не прибавляются элементы.



    
    
        
            
                
                    
                    
                
                
                
                    
                    
                    
                
            
        
    


    
    


Ответы

Ответ 1



Где вы находите такие способы создания коллекций?) Ну, исправим то что есть: Объект создается в ресурсе окна, соответственно добавление элементов в коллекцию должно происходить в конструкторе этого объекта. То что вы добавляете элементы в *.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)); } //--------------------- //реализация интерфейса } //--------------------- После таких манипуляций, использовать привязку одно удовольствие:

Комментариев нет:

Отправить комментарий