DataGridColumns
Overview
Every DataGrid can hold multiple DataGridColumns
. Avalonia has several build-in DataGridColumns
, which can be used to display a certain data type with a certain appearance.
Build-in DataGridColumns
Common Properties for all DataGridColumns
Header
Gets or sets the header content of the column
HeaderTemplate
Gets or sets a data template for the column (see: https://github.com/avaloniachina/Documentation/blob/master/misc/wpf/datatemplates.md)
IsReadOnly
Gets or sets if the column is read-only. If the owning grid is read-only, then the column is also read-only, even if this property is set to true.
DataGridTextColumn
This column is used to display text data, normally represented by a string
. In the normal state the text is displayed in a TextBlock
. If the user edits the current cell, a TextBox
will be shown. This column has some properties which can be used to control the appearance like FontSize
and FontFamily
.
Example
<DataGrid Name="MyDataGrid" Items="{Binding People}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Forename" Binding="{Binding FirstName}"/>
<DataGridTextColumn Header="Surname" Binding="{Binding LastName}" />
</DataGrid.Columns>
</DataGrid>
API Reference
Source code
DataGridCheckBoxColumn
This column is used to represent a bool
value. The value is represented by a CheckBox
, which is disabled in the normal state and enabled in the editing state of the DataGridCell
. If needed you can enable the indeterminate state by setting the property IsThreeState
to true.
Example
<DataGrid Name="MyDataGrid" Items="{Binding ToDoListItems}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="✔" Binding="{Binding IsChecked}"/>
<DataGridTextColumn Header="ToDo" Binding="{Binding Content}" />
</DataGrid.Columns>
</DataGrid>
API Reference
Source code
DataGridTemplateColumn
This column is used to display any content you like. There are two https://github.com/avaloniachina/Documentation/blob/master/misc/wpf/datatemplates.md which you can define, the CellTemplate
for the normal state and the CellEditingTemplate
for the editing state of the current DataGridCell
.
Example
<DataGrid Name="MyDataGrid"
xmlns:model="using:MyApp.Models" >
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" Width="2*" FontSize="{Binding #FontSizeSlider.Value, Mode=OneWay}" />
<DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" Width="2*" FontSize="{Binding #FontSizeSlider.Value, Mode=OneWay}" />
<DataGridTemplateColumn Header="Age">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="model:Person">
<TextBlock Text="{Binding Age, StringFormat='{}{0} years'}" VerticalAlignment="Center" HorizontalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate DataType="model:Person">
<NumericUpDown Value="{Binding Age}" FormatString="N0" HorizontalAlignment="Stretch" Minimum="0" Maximum="120" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
API Reference
Source code
最后更新于
这有帮助吗?