C# Windows窗体组合框-数据绑定到多个属性

C# Windows窗体组合框-数据绑定到多个属性,c#,winforms,data-binding,C#,Winforms,Data Binding,我无法将数据绑定到组合框的SelectedValue和Text属性。以下是相关的代码片段: DataTable dt1 = DataAccess.GetLoanPurposes(); ddLoanPurpose.DisplayMember = "Name"; ddLoanPurpose.ValueMember = "Value"; ddLoanPurpose.DataBindings.Add("Text", _scenario, "LoanPurposeString", false); ddLo

我无法将数据绑定到组合框的SelectedValue和Text属性。以下是相关的代码片段:

DataTable dt1 = DataAccess.GetLoanPurposes();
ddLoanPurpose.DisplayMember = "Name";
ddLoanPurpose.ValueMember = "Value";
ddLoanPurpose.DataBindings.Add("Text", _scenario, "LoanPurposeString", false);
ddLoanPurpose.DataBindings.Add("SelectedValue", _scenario, "LoanPurpose", false);            
ddLoanPurpose.DataSource = dt1;
我可以绑定到TextSelectedValue,一切都非常出色。当我试图同时绑定两个时,麻烦就来了。只有第一个数据绑定有效(上面示例中的文本到LoanPurposeString)。如果我切换数据绑定的顺序

ddLoanPurpose.DataBindings.Add("SelectedValue", _scenario, "LoanPurpose", false);
ddLoanPurpose.DataBindings.Add("Text", _scenario, "LoanPurposeString", false);

…然后我失去了文本到LoanPurposeString的绑定,但现在SelectedValue绑定到LoanPurpose。所以我的问题有两个:为什么这两个绑定不都连接到我的_scenario对象,为什么顺序很重要?

似乎不支持将数据绑定到两个不同的属性(至少我的研究不支持)。在这个特定的实例中,最好的解决方案是将my_scenario对象中的单独属性(LoanPurpose和LoanPurposeString)组合成单个KeyValuePair属性

public KeyValuePair<string, string> LoanPurpose { get; set; }

您试图通过绑定“Text”属性来实现什么?你不需要它。ddLoanPurpose.DataBindings.Add(“文本”,_场景,“LoanPurposeString”,false);
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("Value", typeof(KeyValuePair<string, string>)));
DataRow dRow = dt.NewRow();
dRow["Name"] = "Eric";
dRow["Value"] = new KeyValuePair<string, string>("1", "Eric");
dt.Rows.Add(dRow);
ddLoanPurpose.DisplayMember = "Name";
ddLoanPurpose.ValueMember = "Value";
ddLoanPurpose.DataSource = dt;