2017-04-08 14 views
0

私のプロジェクトではMVPを使用していますが、私はMVPで新しくなっています。 私は2つのコンボボックスを持っています。コンボボックスでオプションを選択すると、別のコンボボックスに新しいデータが書き込まれます。プレゼンター(MVP)のコンボボックスを更新

このアクションはPresenterに表示されます。プレゼンターで私のビュー 'view1'を取得し、Combobox1とCombobox2を 'view1'のプロパティとして導入しました。以下のメソッドで 'DataSource'、 'DisplayMember'、 'ValueMember'、 'Refresh()'が必要です。パターンを使用しているとき

はしかし、プレゼンターに

public string Combobox2 
{ 
    get { return comboBox1.SelectedValue.ToSstring(); } 
} 

全体ではなく、コンボボックスのようなプロパティを送信するのに十分です。どうすればこの問題を解決できますか?

public void OnSelectedIndexChangedCombobox1() 
{ 
    if (view1.Combobox1.SelectedIndex == -1) 
    { 
     return; 
    } 

    DataTable dt = Tools.GetDataTable("A Path"); 

    var query = 
     (from o in dt.AsEnumerable() 
     where o.Field<string>("afield") == 
      farmerView.Combobox1.SelectedValue.ToString() 
     orderby o.Field<string>("anotherfield") 
     select new KeyValuePair<string, string>(o.Field<string>("field1"), 
      o.Field<string>("field2"))).ToList(); 

    farmerView.Combobox2SelectedIndexChanged -= OnSelectedIndexChangedCombobox2; 

    farmerView.Combobox2.DataSource = new BindingSource(query, null); 
    farmerView.Combobox2.DisplayMember = "Value"; 
    farmerView.Combobox2.ValueMember = "Key"; 
    farmerView.Combobox2.Refresh(); 
    farmerView.Combobox2SelectedIndexChanged += 
     OnSelectedIndexChangedCombobox2; 

    farmerView.Combobox2.SelectedIndex = -1; 
} 

は、私たちが呼ぶ(あなたが

答えて

1

あなたが2番目のコンボボックスにデータを提供するプレゼンターからメソッドを呼び出すだけで(例えば、あなたの活動のための)ビューでイベントを取得し、プレゼンターへのAndroidのオブジェクトを渡すべきではありませんありがとうございましたそれはアンドロイドのスピナーです!)最初のものから選択された項目を渡すことで、プレゼンターはViewのメソッドを呼び出して2番目のメソッドを満たし、Viewはそれを行う方法を知ります。

このサンプルプロジェクトhttp://github.com/mmirhoseini/marvelとこの記事https://hackernoon.com/yet-another-mvp-article-part-1-lets-get-to-know-the-project-d3fd553b3e21を参照すると、MVPをよりよく理解できます。

関連する問題