我有一个ASP.NET Web API,它可以根据我的测试正常工作。现在,我想在一个简单的WPF应用程序中使用它。我只想从API获取数据,将其显示在客户端应用程序中,然后使用客户端应用程序添加或删除数据库中的数据。如何正确地将数据从Web API绑定到WPF中的ListBox?
我的问题是,当我将数据传递给ListBox
时,我丢失了信息,特别是丢失了该对象的Id
,我稍后需要将其从数据库中删除。在我的情况,我有这样的事情在我的网页之一:
<ListBox
Name="carCategoryListBox"
Grid.Row="2"
Grid.Column="1" />
,然后在.cs
文件页面,我做这样的事情:
private void Page_Loaded(object sender, RoutedEventArgs e)
{
BindCarCategoryList();
}
private async void BindCarCategoryList()
{
var client = CarHttpClient.GetClient();
HttpResponseMessage response = await client.GetAsync("api/carcategories");
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
var carCategories = JsonConvert.DeserializeObject<List<DTO.CarCategory>>(content);
carCategoryListBox.ItemsSource = carCategories.Select(cc => cc.Category).ToList();
}
else
{
MessageBox.Show("Error code " + response.StatusCode + "\nMessage - " + response.ReasonPhrase);
return;
}
}
正如你所看到的我只是得到我的对象的Category
字段,并将它们传递给要显示的ListBox
。该CarCategory
类是非常简单,可以看到下面:
public class CarCategory
{
public int Id { get; set; }
public string Category { get; set; }
}
的问题是,在后一阶段,我需要获得对象的实际Id
,并使用它。但是,由于我只通过Category
字段到ListBox
,这Id
信息在某种程度上丢失了。如果我做这样的事情:
int id = carCategoryListBox.SelectedIndex;
然后,我只是得到该项目的Id
在ListBox
(这是在列表中哪个项目),我不实际获得对象的原始Id
那存储在数据库中。任何想法如何将数据传递给ListBox
以便我仍然以某种方式保留原始Id
信息?
谢谢,它工作得很好。 – typos