Я (относительно) опытный кодировщик Cocoa / Objective-C и обучаюсь C # и платформе WPF.
В Какао, при заполнении NSTableView
, относительно просто назначить делегат и источник данных для представления. Эти методы делегата / источника данных затем используются для заполнения таблицы и определения ее поведения.
Я собираю простое приложение со списком объектов, которое позволяет называть их Dog
объектами, каждый из которых имеет публичное строковое имя
. Это возвращаемое значение 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 менее чем за час, поэтому можно с уверенностью сказать, что я понятия не имею, что делаю.
место
), похоже, правильно обновляет ListBox
, но мне интересно, что запускает обновления ? Pound
в фоновом потоке? ListBox
обновить себя? (Мне вообще нужно?) Одно изменение , которое, как я знаю, мне нужно сделать, это рефакторинг реализации IEnumerable
в отдельный класс, например DogListItemsSource
, но я хочу убедиться, что у меня твердый подход, прежде чем полировать его.
Не стесняйтесь указывать в комментариях на любые другие моменты, которые я должен учитывать или иметь в виду, большие или маленькие. Я бы хотел научиться этому правильно, с первого раза.