直接绑定数据源到 Avalonia DataGrid,核心就三点:装对包、设好 DataContext、用对绑定表达式。不复杂但容易忽略细节。
安装 DataGrid 扩展包
默认 Avalonia 项目不带 DataGrid,必须手动添加:
安装 NuGet 包:Avalonia.Controls.DataGrid(版本需与主框架一致,比如 Avalonia 11.x 就配 11.x) 在 App.axaml 的
<application.styles></application.styles>中引入主题样式:
<styleinclude source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"></styleinclude>
准备可绑定的数据源
DataGrid 需要实现通知机制的集合,推荐用
ObservableCollection<t></t>: ViewModel 中定义属性,如:
public ObservableCollection<person> People { get; }</person>
构造函数中初始化并填充数据(不能为 null)
确保模型类(如 Person)的属性支持变更通知(若需动态刷新字段值,需实现
INotifyPropertyChanged或用
RaiseAndSetIfChanged)
XAML 中正确绑定 ItemsSource
绑定不是写错一个字母就静默失败,常见写法如下:
ItemsSource="{Binding People}" —— 前提是当前控件的 DataContext已设为 ViewModel 实例 如果 DataGrid 在 UserControl 或嵌套层级中,确认 DataContext 是否被意外覆盖(可用
DataContext="{Binding}" 显式继承)
启用自动生成列:AutoGenerateColumns="True";若手动定义列,每列用
Binding="{Binding PropertyName}"
验证绑定是否生效的小技巧
快速排查白屏或空表:
在 ViewModel 中给People赋值后加断点,确认集合非空且含数据 XAML 中临时加一句:
<textblock text="{Binding People.Count}"></textblock>,看是否显示数字
检查输出窗口是否有 Binding 表达式错误提示(如 “Cannot resolve property”)
基本上就这些。只要包装了、集合活了、路径对了,DataGrid 就能稳稳显示数据。
