none
WPFのコンボボックスのItemにList<>内のList<>にあるプロパティを表示できない件 RRS feed

  • 質問

  • いつもお世話になっています。

    WPFのコンボボックスについてですが、モデルのデータとしてクラスPersonList内に

    List<Person>のデータがあり、Personクラス内には、例えばstring Name,string age,List<TelNumber>のプロパティがあり、

    TelNumberには、string Keitai,string Home

    のようなメンバーがあり、Windowのコンストラクタ(ビハインドコード)でコンボボックスのItemsSourceに、上記のモデルのインスタンスを

    バインディングしています。

    comboBox1.ItemsSource = _personList.personList;//_personListはPersonListクラスのインスタンス

    一方XAMLでは

    <ComboBox IsEditable="False" Name="cmbBox1 ItemsSource="{Binding Path=Keitai}" />

    としており、Keitaiのリストがコンボボックスに表示されて欲しい所なのですが、なぜかNameのリストが表示されてしまっています。

    List<>のList<>内のメンバーのリストをコンボボックスに表示する場合の方法について、ご教示願えたらと思います。

    宜しくお願い致します。

    2011年9月22日 5:45

回答

  • Hongliangさん、早速のご回答ありがとうございます。

    comboBox1 と cmbBox1 は同一のものです。すみません。ミスタイプです。

    ビハインドコードでバインディング処理を削ってしまうと、コンボボックスにはItemがなくなってしまっています。

    本来ならばXAMLでItemsSourceにバインドするとOKですよね。。。

    Listを含むListでも問題なくコンボボックスが表示できるのかが気になっております。

    ちなみに今回のモデルには、初期状態ではデータは空の状態で、データ取得コマンド後にデータがモデルに

    格納されるのですが、関係ありますでしょうか?

    もちろんコンボボックスはデータ取得完了後にアクセスしています。

    バインディングはそういった場合にも使えると理解しているのですが。。。

    • 回答としてマーク CYG01571 2011年9月22日 7:14
    2011年9月22日 6:30

すべての返信

  • comboBox1 と cmbBox1 というのは同一の ComboBox でしょうか? もしそうであれば、ItemsSource を書き換えてるわけですからそりゃうまくいかないでしょう。

    それとも、まず comboBox1 で人物を選択し、そこで選択された人物の電話番号を cmbBox1 に並べるという手順でしょうか? であるなら、cmbBox1 の ItemsSource は comboBox1 の SelectedItem に対する Binding になるでしょう。

    2011年9月22日 6:20
  • Hongliangさん、早速のご回答ありがとうございます。

    comboBox1 と cmbBox1 は同一のものです。すみません。ミスタイプです。

    ビハインドコードでバインディング処理を削ってしまうと、コンボボックスにはItemがなくなってしまっています。

    本来ならばXAMLでItemsSourceにバインドするとOKですよね。。。

    Listを含むListでも問題なくコンボボックスが表示できるのかが気になっております。

    ちなみに今回のモデルには、初期状態ではデータは空の状態で、データ取得コマンド後にデータがモデルに

    格納されるのですが、関係ありますでしょうか?

    もちろんコンボボックスはデータ取得完了後にアクセスしています。

    バインディングはそういった場合にも使えると理解しているのですが。。。

    • 回答としてマーク CYG01571 2011年9月22日 7:14
    2011年9月22日 6:30
  • Listを含むListでも問題なくコンボボックスが表示できるのかが気になっております。

    Listの中にListがありますから、データはツリー構造になります。これを一つのComboBoxで表すのは無理です。やるとすれば、Hogliangさんが書かれている方法などになると思いますが、本当にそのデータ構造でよろしんでしょうか?
    もちろん、今のデータ構造が必ずしも誤りというわけではありませんので、どのようなことを実現されたいのかによって、実装が変わってきます。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年9月22日 6:47
    モデレータ
  • trapemiyaさん、ありがとうございます。

    やはり、Listの中にListがあるデータ構造上は駄目でしたか。。。

    Hogliangさんのやり方かデータ構造の見直しで乗り切ってみたいと思います。

    ありがとうございました。

    2011年9月22日 7:14