2016-07-14 3 views
0

im пытается создать ComboBox, заполненный данными, которые я получил от службы REST.Связать данные службы REST с ComboBox

В моем окне у меня есть метод, чтобы получить данные и установить ViewModel:

private void ComboBox_Loaded(object sender, RoutedEventArgs e) 
     { 
      String url = "http://localhost:8081/HTTP/testFrigoexim/prijem/getDodavatele"; 
      WebClient client = new WebClient(); 
      String response = client.DownloadString(url); 
      Dodavatele dodavatele; 

      DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Dodavatele)); 
      using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(response))) 
      { 
       dodavatele = (Dodavatele)serializer.ReadObject(stream); 
      } 

      ComboBoxDodavatele.DataContext = new ViewModel(dodavatele); 
     } 

Класс представляет данные от REST службы:

namespace TestovaciAplikace.Prijem 
{ 
    [DataContract] 
    public class Dodavatele 
    { 
     [DataMember] 
     public List<Dodavatel> dodavatele { get; set; } 
    } 

    public class Dodavatel 
    { 
     public string CODE { get; set; } 
    } 
} 

и последний класс, ViewModel

namespace TestovaciAplikace.Prijem 
{ 
    public class ViewModel : NotifyPropertyChanged 
    { 
     public Dodavatele dodavatele { get; set; } 

     public ViewModel(Dodavatele dodavatele) 
     { 
      this.dodavatele = dodavatele; 
     } 
    } 
} 

Связывание с ComboBox -

<ComboBox Name="ComboBoxDodavatele" HorizontalAlignment="Left" Margin="109,10,0,0" VerticalAlignment="Top" Width="210" Height="35" 
        Loaded="ComboBox_Loaded" ItemsSource="{Binding dodavatele}" DisplayMemberPath="CODE"/ 

Если я запускаю программу, ComboBox пуст. Если я заменил ny ViewModel, чтобы вернуть только простой List<String>, он работает (если я изменяю свойства привязки), но я не могу заставить его работать с моими данными JSON. Любой совет?

+0

О человеке, спасибо! Измените его, и похоже, что он работает! Если вы опубликуете его в качестве ответа, я приму это! – Sk1X1

ответ

1

Так как ViewModel и класс Dodavatele имеют dodavatele собственность, ItemsSource Переплет должен выглядеть следующим образом

ItemsSource="{Binding dodavatele.dodavatele}" 
Смежные вопросы