Использование 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, но я хочу убедиться, что у меня есть твердый подход, прежде чем полировать его.

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

Ответы на вопрос(2)

Ваш ответ на вопрос