2011-10-22 7 views
1

私はpersonクラスを作成しています。作成するクラスはでObservableCollection<person>です。私は同様の実装のいくつかの例を見てきましたが、それらの違いを十分に理解していません。例えば:ObservableCollectionを作成する<T>クラス

public class people : ObservableCollection<person> 
{ 
    public people() 
    { 
    } 
} 

public class people 
{ 
    ObservableCollection<person> public people() 
    { 
    } 
} 

は根本的に間違っているこれらの実装の1つですか?私は動作するコードはありませんが、正しい方向への動きを開始したいと思います。 (Grokyの提案@あたり)

EDIT:

私はObservableCollection<Person>を作成するために探しています。このコレクションをバインドしてMVVM設定で使用したいと思います。具体的には、すべての人物を姓と名などをカスタムコントロールにバインドしたいと考えています。

FIRST:クラスを作成するのは悪い習慣ですか、@Grokyの示唆しているようにObservableCollectionをビューモデル内に実装する必要がありますか?

第2回:このタイプの問題を解決するためにObservableCollectionを正しいルートで使用していますか?

+0

はい、二つ目は根本的に間違っています。 – BoltClock

+0

@StinkerPeter:あなたの最近のコメントを人々に反映させるためにあなたの答えを更新すべきだと思います。あなたの質問は現状のままで誤解を招き、有用な回答を得ることはまずありません。特に、WPFバインディングを使用して何をしようとしているのかについて言及してください。それは非常に重要です! – Grokys

+0

後者はコンパイルさえしません。 あなたはそこで何をしようとしていますか?最初のものは大丈夫ですが、他のコンストラクタを追加する必要があります。コンストラクタは、既存の列挙型またはPersonのリストを渡すことができます。 –

答えて

2

WPFでMVVMパターンを使用しているようで、ViewModelクラスを作成しようとしているようです。

前述の回答者の2つのオプションは、1)継承2)委任について説明しています。どちらを選択するかは、あなたが表現しようとしているもののという意味のに依存します。

人物のコレクションに何かを論理的に追加しようとすると、継承が選択されます。しかし、WPFの追加プロパティをバインドしたいというヒントがあるので、コレクションにプロパティを論理的に追加していないことを示唆しています。あなたはと一緒にコレクションを追加しています。そのため、この場合、WPF用語でViewModelを作成しています。ここで

は例です:

public PeopleViewModel 
{ 
    public PeopleViewModel() 
    { 
     Items = new ObservableCollection<Person>(); 
    } 

    public ObservableCollection<Person> Items { get; private set; } 

    public int NumberOfPeople 
    { 
     get { return Items.Distinct().Count; } 
    } 
} 
1

なぜPeopleクラスを作成したいですか?物事をグループ化するためだけにカスタムコレクションを作成することは、通常、悪い考えです。

+0

私は複数の '' person''データを読み込み、すべての人物、通常そのプロパティのdistinct()のためのプロパティを返すことができるようにしたいと思います。私はそれが理にかなったことを願うなぜそれが悪い考えであるのかを拡大できますか?好ましい方法は何でしょうか?これは私にとって非常に新しいものです。私は一度に1ステップずつそれを選択しようとしています。 – StinkerPeter

+0

彼は人の授業でより多くのことをやりたいと思うかもしれない、私的な仕事や人々のための機能 – DeveloperX

1

私には、継承や委任パターンなど、いくつかの選択肢があると思います。ですから、第1の変種では継承パターンがあり、2番目のコンポジションではミックスインとアスペクトパターンです。

+0

私の最大のハードルの一つは、答えを探すための適切な用語を見つけることです。私は漠然とした継承を認識していますが、委任についてはあまり読んでいません。ポインタをありがとう。私はこれらの用語を使って、その方向性を助けます。 – StinkerPeter

関連する問題