Binding Combobox SelectedValue со значением данных страницы - PullRequest
1 голос
/ 06 июля 2011

BASE = C #, .Net, MVC, Silverlight 4 просмотров

Я посмотрел ответы на похожие проблемы и до сих пор не могу заставить его работать.Я думаю, это не такая простая проблема, как я думал вначале.

У меня есть класс 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 из контроллера.Этот объект устанавливается как DataContext для LayoutRoot.

Затем у меня есть выпадающий список, у которого 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 в текстовом блоке, но то же имя, которое появляется в раскрывающемся списке, не выбрано, потому что я связываюсь с неправильной вещью.То, что я хочу, - это поле со списком, загруженное со значениями из списка и ProjectProponent из AgreementInfo, чтобы быть выбранным элементом.

1 Ответ

0 голосов
/ 08 июля 2011

Ваш ItemSource установлен до привязки? Если привязка происходит до того, как будет установлен ItemSource, привязка SelectedValue не будет работать. Я видел подобные проблемы с синхронизацией раньше. Разве вы не можете установить ItemSource с помощью привязки XAML, а не в коде?

Я заметил, что вы также не устанавливаете свойство SelectedValuePath комбо. Без этого вы пытаетесь назначить Responsible_Person для ProjectProponent.FullName (SelectedValue). Проверьте эту статью для хорошего объяснения всех свойств элемента управления ComboBox: http://johnpapa.net/binding-to-silverlight-combobox-and-using-selectedvalue-selectedvaluepath-and-displaymemberpath

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...