跳到主要内容
版本:11.0.0

数据表格列

数据表格可以包含多个数据表格列,Avalonia UI 提供了两种内置列类型,用于显示不同的数据类型,还有一个可以自定义列外观的模板类型。

列类型描述
DataGridTextColumn用于显示和编辑列数据的文本框。您可以在此列类型中控制字体属性,比如字体家族和大小。
DataGridCheckBoxColumn用于显示和编辑列数据的复选框,当数据类型为布尔值时。此列类型还支持当值为可空时的三态复选框。
DataGridTemplateColumn可用于自定义列数据的展示和编辑。

常用属性

大部分属性在这三种列类型中都是通用的:

属性描述
Header列的标题内容。
HeaderTemplate使用数据模板作为列的标题。
IsReadOnly列是否为只读。如果数据表格本身是只读的,那么无论此属性的值如何,列都是只读的。
IsThreeState仅适用于复选框列。当可空布尔值为null时,启用第三个(填充)状态。
Width列宽度可以是绝对大小或相对大小(见下文)。

列宽度

如果您没有为列设置宽度,它将被调整以适应内容,并在必要时为网格添加水平滚动条。

您可以绝对设置列的宽度,例如:

<DataGridTextColumn Width="200" />

这将导致不适合的列内容被隐藏。

或者,您可以指定相对自动大小。这使用 * 表示可用宽度的等分,然后使用类似 2* 的倍数。未指定宽度的列将根据其内容调整大小。

例如,要将数据表格划分为3个等宽的列:

<DataGridTextColumn Width="*" />
<DataGridTextColumn Width="*" />
<DataGridTextColumn Width="*" />

示例

下面的示例通过将两列等宽展开来改进数据表格的外观:

<Window ... >
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
<DataGrid Margin="20" ItemsSource="{Binding People}"
IsReadOnly="True"
GridLinesVisibility="All"
BorderThickness="1" BorderBrush="Gray">
<DataGrid.Columns>
<DataGridTextColumn Header="名字" Width="*"
Binding="{Binding FirstName}"/>
<DataGridTextColumn Header="姓氏" Width="*"
Binding="{Binding LastName}" />
</DataGrid.Columns>
</DataGrid>
</Window>
C# ViewModel
using AvaloniaControls.Models;
using System.Collections.Generic;
using System.Collections.ObjectModel;

namespace AvaloniaControls.ViewModels
{
public class MainWindowViewModel : ViewModelBase
{
public ObservableCollection<Person> People { get; }

public MainWindowViewModel()
{
var people = new List<Person>
{
new Person("Neil", "Armstrong"),
new Person("Buzz", "Lightyear"),
new Person("James", "Kirk")
};
People = new ObservableCollection<Person>(people);
}
}
}
数据源 Person 类
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }

public Person(string firstName , string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}

在预览窗口中可以看到效果,因为 <Design.DataContext> 元素创建了绑定的 ViewModel:

更多信息

信息

有关数据表格文本列的完整 API 文档,请参阅此处

信息

有关数据表格复选框列的完整 API 文档,请参阅此处

信息

查看 GitHub 上的源代码DataGridTextColumn.cs

信息

查看 GitHub 上的源代码DataGridCheckBoxColumn.cs