Привязка данных¶
Унаследованное свойство DataControlBase.ItemsSource
позволяет привязать Data Grid к источнику данных (например, коллекции бизнес-объектов). После привязки контрол извлекает элементы из источника данных и представляет их в виде строк.
Data Grid отображает поля источника данных (свойства бизнес-объекта) в виде столбцов. Если столбец не создан, в строках не отображаются данные.
Автоматическое создание столбцов¶
Вы можете включить опцию DataGridControl.AutoGenerateColumns
для автоматического создания столбцов для всех свойств/полей источника данных, когда Data Grid инициализируется во время выполнения программы. Если опция AutoGenerateColumns
отключена, метод PopulateColumns
позволяет вызвать автоматическую генерацию столбцов из кода.
Когда столбец генерируется автоматически, контрол Data Grid запускает два события, которые вы можете обработать, чтобы отменить генерацию столбца и настроить свойства столбца.:
DataGridControl.AutoGeneratingColumn
— срабатывает, когда столбец собирается быть добавленным в коллекциюDataGridControl.Columns
. Используйте это событие, чтобы предотвратить добавление столбца в таблицу или настроить свойства столбца.DataGridControl.AutoGeneratedColumns
— Срабатывает после завершения автоматической генерации всех столбцов.
Пример - Привязать DataGrid и автоматически генерировать столбцы¶
Следующий код привязывает Data Grid к коллекции объектов EmployeeInfo и позволяет свойству AutoGenerateColumns
автоматически генерировать столбцы для всех публичных свойств, предоставляемых классом EmployeeInfo.
xmlns:mxdg="https://schemas.eremexcontrols.net/avalonia/datagrid"
...
<mxdg:DataGridControl x:Name="dataGrid" ItemsSource="{Binding Employees}"
AutoGenerateColumns="True" BorderThickness="1,1">
</mxdg:DataGridControl>
public partial class MainViewModel : ViewModelBase
{
[ObservableProperty]
IList<EmployeeInfo> employees;
public MainViewModel()
{
//Generate sample data.
Employees = EmployeesData.GenerateEmployeeInfo();
}
}
public class EmployeeInfo
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public DateTime HiredAt { get; set; }
public int Experience { get; set; }
public string Position { get; set; }
public EmploymentType EmploymentType { get; set; }
public bool Married { get; set; }
public string City { get; set; }
public string Phone { get; set; }
}
Отобразить определенный набор столбцов в Data Grid¶
Если вам нужно отобразить определенный набор полей/свойств в Data Grid, вы можете выполнить одно из следующих действий:
-
Автоматически генерируйте столбцы, а затем вручную получайте доступ к ненужным столбцам из коллекции
DataGridControl.Columns
и удаляйте их. Вы также можете скрыть ненужные столбцы, используя опциюGridColumn.IsVisible
. -
Скройте определенные свойства на уровне источника данных, а затем используйте автоматическую генерацию столбцов. Чтобы предотвратить создание столбцов для определенных свойств бизнес-объекта, примените атрибут
Browsable
илиDisplay(AutoGenerateField)
к свойствам источника. Смотрите следующий раздел для получения дополнительной информации: Столбцы . -
Создайте столбцы сетки вручную.
Создание столбцов вручную¶
Вы можете вручную создать столбцы (связанные или несвязанные) в коллекции DataGridControl.Columns
. Столбцы в контроле Data Grid инкапсулируются классом GridColumn
. При создании столбца инициализируйте свойство GridColumn.FieldName
, чтобы привязать столбец к публичному свойству/полю в привязанном источнике данных.
Установите для опции DataGridControl.AutoGenerateColumns
значение false
, чтобы отображать только созданные столбцы и предотвращать автоматическое создание других столбцов.
Смотрите разделы Столбцы и Несвязанные столбцы для получения дополнительной информации.
Пример - Привязать DataGrid и сгенерировать столбцы вручную¶
Приведенный ниже код создает три столбца в коллекции DataGridControl.Columns
. Для столбца "ДАТА найма" используется встроенный редактор DateEditor
для отображения значений столбца.
xmlns:mxdg="https://schemas.eremexcontrols.net/avalonia/datagrid"
xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"
...
<mxdg:DataGridControl x:Name="dataGrid" ItemsSource="{Binding Employees}"
AutoGenerateColumns="False" BorderThickness="1,1">
<mxdg:GridColumn FieldName="FirstName" Width="*" MinWidth="80"/>
<mxdg:GridColumn FieldName="LastName" Width="*" MinWidth="80"/>
<mxdg:GridColumn FieldName="HiredAt" Header="Hire Date" Width="*" MinWidth="80">
<mxdg:GridColumn.EditorProperties>
<mxe:DateEditorProperties/>
</mxdg:GridColumn.EditorProperties>
</mxdg:GridColumn>
</mxdg:DataGridControl>
public partial class MainViewModel : ViewModelBase
{
[ObservableProperty]
IList<EmployeeInfo> employees;
public MainViewModel()
{
Employees = EmployeesData.GenerateEmployeeInfo();
}
}
public class EmployeeInfo
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public DateTime HiredAt { get; set; }
public int Experience { get; set; }
public string Position { get; set; }
public EmploymentType EmploymentType { get; set; }
public bool Married { get; set; }
public string City { get; set; }
public string Phone { get; set; }
}
Связанный API¶
Недвижимость¶
DataGridControl.Columns
— Набор столбцов сетки.DataGridControl.AutoGenerateColumns
— Указывает, будет ли Data Grid автоматически генерировать столбцы для публичных свойств/полей, предоставляемых источником данных во время выполнения программы.GridColumn.FieldName
— Указывает имя поля/свойства, к которому привязан столбец.
Методы¶
PopulateColumns
— Генерирует столбцы для публичных полей/свойств, предоставляемых связанным источником данных.
События¶
DataGridControl.AutoGeneratingColumn
— срабатывает, когда столбец собирается быть добавленным в коллекциюDataGridControl.Columns
. Используйте это событие, чтобы предотвратить добавление столбца в таблицу или настроить свойства столбца.DataGridControl.AutoGeneratedColumns
— Срабатывает после завершения автоматической генерации всех столбцов.
Смотрите также¶
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.