c# - 如何将 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>
解决方案
假设一个实例ARCGISapi
被设置为你的DataGrid(或Window)的DataContext,那么ItemsSource
应该绑定到Locations
而不是LocationElement
(属性的名称而不是类型的名称)。
推荐阅读
- pyopenssl - 子类 PyOpenSSL X509 并使用现有证书对其进行初始化
- python - 使用 Python Dask 读取大型 JSON 文件会引发分隔符错误
- mysql - MySQL 优化 INFORMATION_SCHEMA 查询
- node.js - node.js 中的 node-modules 是如何实现的,socket.io 中的函数实现和创建实例是如何相同的
- laravel - homestead.test 响应时间过长
- python - 如何生成抛物面并使其响应事件
- javascript - 卡片视图中未显示 Formik 标签
- python - 如何从输入中获取html并在Python Django中保存为变量
- plugins - 如何使用 NativeScript 插件?
- angular - 我需要通过 API 控制器的 GET 请求将 JSON 对象数组放入 Angular 页面