C# 从演示者(MVP)更新组合框

C# 从演示者(MVP)更新组合框,c#,combobox,mvp,C#,Combobox,Mvp,我在我的项目中使用MVP,但我是MVP新手。 我有两个组合框。当我在一个组合框中选择一个选项时,另一个组合框应该填充新数据 此操作将在演示者中执行。我在Presenter中获取视图“view1”,并在“view1”中引入Combobox1和Combobox2作为属性,因为我需要在下面的方法中使用“DataSource”、“DisplayMember”、“ValueMember”和“Refresh()” 但是,当使用模式时,发送一个属性(如 public string Combobox2 {

我在我的项目中使用MVP,但我是MVP新手。 我有两个组合框。当我在一个组合框中选择一个选项时,另一个组合框应该填充新数据

此操作将在演示者中执行。我在Presenter中获取视图“view1”,并在“view1”中引入Combobox1和Combobox2作为属性,因为我需要在下面的方法中使用“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;
}
selectedIndexChangedBox1()上的公共无效
{
如果(view1.Combobox1.SelectedIndex==-1)
{
返回;
}
DataTable dt=Tools.GetDataTable(“路径”);
变量查询=
(从dt.AsEnumerable()中的o开始)
其中o.Field(“afield”)==
farmerView.Combobox1.SelectedValue.ToString()
orderby o.Field(“另一个字段”)
选择新的KeyValuePair(o.Field(“field1”),
o、 字段(“字段2”))。ToList();
farmerView.Combox2SelectedIndexChanged-=OnSelectedIndexChangedCombox2;
farmerView.Combobox2.DataSource=newbindingsource(查询,null);
farmerView.Combobox2.DisplayMember=“Value”;
farmerView.Combobox2.ValueMember=“Key”;
farmerView.Combobox2.Refresh();
farmerView.Combox2SelectedIndexChanged+=
On SelectedIndexChangedCombox2;
farmerView.Combobox2.SelectedIndex=-1;
}

谢谢

您不应该将任何Android对象传递给presenter,只需查看事件(例如您的活动),然后从presenter调用一个方法,为第二个组合框(我们在Android中称之为微调器!)提供数据,方法是从第一个组合框传递所选项目,然后演示者将调用一个视图方法,该方法填充第二个视图,并且视图知道如何执行该操作

您可以查看此示例项目和本文,以更加熟悉MVP