BASE = C#,。Net,MVC,Silverlight 4 views
我看过对类似问题的回答,但仍然无法让它发挥作用。我想这并不像我最初想的那么简单。
我有一个ContractInfo类,其中包含一个ProjectProponent属性
. . .
public Responsible_Person ProjectProponent { get; set; }
. . .
类型为Responsible_Person
. . .
public string LASTNAME { get { return m_last; } set { m_last = value; } }
public string USERNAME { get { return m_uname; } set { m_uname = value; } }
public string FIRSTNAME { get { return m_first; } set { m_first = value; } }
public string FullName { get { return m_first + " " + m_last; } }
. . .
当SL控件加载时,它通过json从控制器获取一个AgreementInfo对象。此对象设置为LayoutRoot的DataContext。
然后,我有一个组合框,其ItemSource设置为List。目前,它是像
那样硬连线的虚拟数据 . . .
List<Responsible_Person> items = new List<Responsible_Person>();
Responsible_Person newguy = new Responsible_Person();
newguy.FIRSTNAME = "Jane"; newguy.LASTNAME = "Dough"; newguy.USERNAME = "jdough"; newguy.RP_ROLES = dummyroles;
items.Add(newguy);
. . .
cboProjectProponent.ItemsSource = items;
cboProjectProponent.DisplayMemberPath = "FullName";
最终将从服务中获取该列表。
问题: 在XAML中我有
. . .
<TextBlock x:Name="tbktest" Text="{Binding ProjectProponent.FullName}" />
<ComboBox x:Name="cboProjectProponent" SelectedValue="{Binding ProjectProponent.FullName, Mode=TwoWay}" />
. . .
我猜我在文本块中看到了来自AgreementInfo
的正确名称,但是没有选择出现在下拉列表中的相同名称,因为我绑定了错误的东西。我想要的是组合框,其中包含List中的值和来自AgreementInfo的ProjectProponent将成为所选项目。
答案 0 :(得分:0)
在绑定之前是否设置了ItemSource?如果在设置ItemSource之前发生绑定,则SelectedValue绑定将不起作用。我以前见过这些类型的计时问题。你能不能通过XAML绑定而不是代码设置ItemSource?
我注意到你也没有设置组合的SelectedValuePath属性。如果没有这个,您将尝试将Responsible_Person分配给ProjectProponent.FullName(SelectedValue)。查看本文以获取所有ComboBox控件属性的详细说明:http://johnpapa.net/binding-to-silverlight-combobox-and-using-selectedvalue-selectedvaluepath-and-displaymemberpath