Использование ItemsSource для заполнения WPF ListBox - хорошая идея?
Я (относительно) опытный программист Cocoa / Objective-C, и я учу себя C # и структуре WPF.
В какао, при заселенииNSTableView
это относительно просто назначить делегат и источник данных для представления. Эти методы делегата / источника данных затем используются для заполнения таблицы и определения ее поведения.
Я собираю простое приложение, которое имеет список объектов, давайте вызывать ихDog
объекты, каждый из которых имеетpublic string name
, Это возвращаемое значениеDog.ToString()
.
Объекты будут отображаться вListBox
и я хотел бы заполнить это представление, используя образец, аналогичный какаоNSTableViewDataSource
, В настоящее время, кажется, работает с использованием:
public partial class MainWindow : Window, IEnumerable<Dog>
{
public Pound pound = new Pound();
public MainWindow()
{
InitializeComponent();
Dog fido = new Dog();
fido.name = "Fido";
pound.AddDog(fido);
listBox1.ItemsSource = this;
Dog spot = new Dog();
spot.name = "Spot";
pound.AddDog(spot);
}
public IEnumerator<Dog> GetEnumerator()
{
return currentContext.subjects.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
Но мне интересно, какверный это. Я буквально установил Visual Studio менее чем на час, поэтому можно с уверенностью сказать, что я понятия не имею, что я делаю.
Это правильный шаблон?Добавление второго элемента в список (spot
кажется, чтобы обновитьListBox
правильно, но мне интересно, что вызывает обновления?Что произойдет, если я обновлюPound
в фоновом потоке?Как я могу вручную спроситьListBox
обновить себя? (Мне вообще нужно?)Одно изменение что я знаю, что мне нужно сделать, это рефакторингIEnumerable<Dog>
реализация в своем собственном классе, какDogListItemsSource
, но я хочу убедиться, что у меня есть твердый подход, прежде чем полировать его.
Не стесняйтесь указать в комментариях любые другие моменты, которые я должен рассмотреть или иметь в виду, большие или маленькие. Я хотел бы узнать это правильно, в первый раз.