将数据从 REST 服务绑定到 ComboBox
Bind data from REST service to ComboBox
我正在尝试创建 ComboBox
填充我从 REST 服务获得的数据。
在我的 window 中,我有获取数据和设置 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);
}
Class 表示来自 REST 服务的数据:
namespace TestovaciAplikace.Prijem
{
[DataContract]
public class Dodavatele
{
[DataMember]
public List<Dodavatel> dodavatele { get; set; }
}
public class Dodavatel
{
public string CODE { get; set; }
}
}
最后 class、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
替换为 return 只有简单的 List<String>
它可以工作(如果我更改绑定属性),但我无法让它与我的 JSON 数据一起工作。有什么建议吗?
由于 ViewModel 和 Dodavatele class 都有 dodavatele
属性,ItemsSource 绑定应该如下所示
ItemsSource="{Binding dodavatele.dodavatele}"
我正在尝试创建 ComboBox
填充我从 REST 服务获得的数据。
在我的 window 中,我有获取数据和设置 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);
}
Class 表示来自 REST 服务的数据:
namespace TestovaciAplikace.Prijem
{
[DataContract]
public class Dodavatele
{
[DataMember]
public List<Dodavatel> dodavatele { get; set; }
}
public class Dodavatel
{
public string CODE { get; set; }
}
}
最后 class、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
替换为 return 只有简单的 List<String>
它可以工作(如果我更改绑定属性),但我无法让它与我的 JSON 数据一起工作。有什么建议吗?
由于 ViewModel 和 Dodavatele class 都有 dodavatele
属性,ItemsSource 绑定应该如下所示
ItemsSource="{Binding dodavatele.dodavatele}"