私は (比較的) 経験豊富な Cocoa/Objective-C コーダーであり、C# と WPF フレームワークを独学しています。
Cocoa では、 を設定するときNSTableView
に、デリゲートとデータソースをビューに割り当てるのは比較的簡単です。次に、これらのデリゲート/データソース メソッドを使用して、テーブルにデータを入力し、その動作を決定します。
オブジェクトのリストを持つ単純なアプリケーションをまとめています。それらをDog
オブジェクトと呼びましょう。それぞれにpublic string name
. の戻り値ですDog.ToString()
。
オブジェクトは に表示されますListBox
。Cocoa の と同様のパターンを使用して、このビューに入力したいと思い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 をインストールしてから 1 時間も経っていないので、自分が何をしているのかまったくわからないと言っても過言ではありません。
- これは正しいパターンですか?
- リスト ( ) に 2 番目の項目を追加すると
spot
、適切に更新されるように見えListBox
ますが、何が更新をトリガーするのでしょうか? Pound
バックグラウンド スレッドでを更新するとどうなりますか?ListBox
に自分自身を更新するように手動で依頼するにはどうすればよいですか? (私もする必要がありますか?)
行う必要があるとわかっている変更の 1 つIEnumerable<Dog>
は、実装を独自のクラスにリファクタリングするDogListItemsSource
ことです。
コメントで、大小を問わず、私が対処または心に留めておくべきその他のポイントを自由に指摘してください. 私はこれを正しい方法で初めて学びたいと思います。