2013-04-02 3 views
0

XElement Doc.Как привязать данные от XElement к combobox

<forms xmlns=""> 
    <form> 
    <id>1361</id> 
    <name>TEST3</name> 
    </form> 
    <form> 
    <id>1658</id> 
    <name>TEST4</name> 
    </form> 
    <form> 
    <id>1975</id> 
    <name>Mac New Patient</name> 
    </form> 
    <form> 
    <id>2209</id> 
    <name>Test Atlantic</name> 
    </form> 
    <form> 
    <id>2565</id> 
    <name>Rice Creek Test</name> 
    </form> 
</forms> 

код за

XElement xmlForms = data.GetXmlForm(); 
var ElementsList = from c in xmlForms.Element("Forms").Descendants("form") 
select new { Name = c.Element("name").Value, ID = c.Element("id").Value }; 

cBox_NewPat.DataContext = ElementsList; 
cBox_NewPat.DisplayMemberPath = "name"; 
cBox_NewPat.SelectedValuePath = "id"; 

мне нужно, чтобы связать данные (имя, идентификатор) из XElement в WPF ComboBox. По какой-то причине он не работает, даже не получает данные из XML в список элементов.

+0

Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

действительно так же просто, как изменение. Элемент («Формы») на. Элемент («формы»)? – Phil

+0

@Phil, извините, была моя ошибка, я намеревался набрать «формы», но ее не работает, вернул нулевой результат – Jay

ответ

0

Имена свойств чувствительны к регистру.

Вам нужно изменить

cBox_NewPat.DisplayMemberPath = "name"; 
cBox_NewPat.SelectedValuePath = "id"; 

Для

cBox_NewPat.DisplayMemberPath = "Name"; 
cBox_NewPat.SelectedValuePath = "ID"; 

, чтобы соответствовать вашему анонимный тип.

+0

Это нормально, все в нижнем регистре. У меня получилось пустое исключение, когда я запускаю эти коды – Jay

+0

Извините, вы правы, это была единственная ошибка. получил это сейчас Спасибо, что не спеша ответить – Jay

0

Похоже, вам не хватает нескольких вещей здесь (кроме нулевого результата - я доберусь до него ниже).

  1. необходимо установить свойство ItemsSource в поле со списком.

    cBox_NewPat.ItemsSource = ElementsList 
    
  2. вы должны использовать

    cBox_NewPat.DisplayMemberPath = "Name"; 
    

    вместо

    cBox_NewPat.DisplayMemberPath = "name"; 
    

    , так как ваш анонимный тип недвижимости называется "Имя", а не "имя". То же самое с SelectedValuePath

  3. , пожалуйста, покажите, что вы делаете в методе GetXmlForm - здесь что-то не так. Если вы выполняете XElement.Parse (xmlString), то он будет работать, если вы удалите атрибут пространства имен (xmlns) из элемента forms. Вы также должны использовать

    xmlForms.Descendants("form") 
    

    вместо

    xmlForms.Element("forms").Descendants("form") 
    
Смежные вопросы