2011-07-06 30 views
1

BASE = C#,.NET,MVC,Silverlight的4次綁定組合框的SelectedValue頁數據值

我已經看了應對類似的問題,我仍然不能得到它的工作。我想這不像我第一次想到的那樣簡單。

我有一個類AgreementInfo包含,除了別的以外,一個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<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中的值和ProjectInfo中的ProjectProponent作爲選定的項目。

回答

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