首页 > 解决方案 > 如何将 c# 对象绑定到 WPF 数据网格

问题描述

我将 JSON 对象反序列化为 C#,然后将数据网格 ItemSource/DataContext 等同于它。自动生成列工作正常,但我只是想从列表中获取特定列,它似乎没有工作。我还查看了以下答案,但它似乎对我没有帮助。 WPF DataGrid 绑定不起作用 这是我的代码:

public class ARCGISapi
{
  [JsonProperty("locations")]
  public LocationElement[] Locations { get; set; }
}

public class LocationElement
{
  [JsonProperty("address")]
  public string Address { get; set; }

  [JsonProperty("location")]
  public LocationLocation Location { get; set; }

  [JsonProperty("score")]
  public long Score { get; set; }

  [JsonProperty("attributes")]
  public Attributes Attributes { get; set; }
}

private void PopulateGrid(string result)
{
  ARCGISapi apiWrapper = new ARCGISapi();
  apiWrapper = JsonConvert.DeserializeObject<ARCGISapi>(result);
  ResultsDataGrid.DataContext = apiWrapper.Locations;
  ResultsDataGrid.ItemsSource = apiWrapper.Locations;
}

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Locations}" x:Name="ResultsDataGrid">
 <DataGrid.Columns>
    <DataGridTextColumn Header="Score" Binding="{Binding Score}" />
    <DataGridTextColumn Header="Location" Binding="{Binding Location.X}" />
 </DataGrid.Columns> 
</DataGrid>

标签: c#wpfdatagrid

解决方案


假设一个实例ARCGISapi被设置为你的DataGrid(或Window)的DataContext,那么ItemsSource应该绑定到Locations而不是LocationElement(属性的名称而不是类型的名称)。


推荐阅读