Привязка данных и создание строк¶
В этом разделе показано, как привязать PropertyGrid к одному и нескольким объектам. По умолчанию контрол автоматически генерирует строки для публичных свойств привязанного объекта (объектов). Вы можете отключить автоматическую генерацию строк, создавать строки вручную, настраивать параметры строк и задавать шаблоны строк.
Привязка к одному объекту¶
Используйте свойство PropertyGridControl.SelectedObject, чтобы привязать контрол к одному объекту. После привязки контрол автоматически отображает свойства объекта.
Пример¶
Следующий пример привязывает PropertyGrid к объекту MyBusinessObject, определённому во ViewModel.
xmlns:mxpg="https://schemas.eremexcontrols.net/avalonia/propertygrid"
xmlns:local="using:PropertyGridTest"
<Window.DataContext>
<local:SampleViewModel/>
</Window.DataContext>
<mxpg:PropertyGridControl
Name="propertyGridControl1"
SelectedObject="{Binding MyBusinessObject}"
BorderThickness="1"
UseModernAppearance="True"
Margin="5"/>
using CommunityToolkit.Mvvm.ComponentModel;
public partial class SampleViewModel : ViewModelBase
{
[ObservableProperty]
MyBusinessObject myBusinessObject;
}
public partial class MyBusinessObject : ViewModelBase
{
[ObservableProperty]
string text = "Sample text";
[ObservableProperty]
double borderSize = 5;
[property: Category("Font")]
[ObservableProperty]
string fontFamily = FontManager.Current.DefaultFontFamily.Name;
[property: Category("Font")]
[ObservableProperty]
double fontSize = 14;
[property: Category("Font")]
[ObservableProperty]
bool isBold = true;
[property: Category("Font")]
[ObservableProperty]
bool isItalic;
[property: Category("Alignment")]
[ObservableProperty]
HorizontalAlignment horizontalAlignment = HorizontalAlignment.Center;
[property: Category("Alignment")]
[ObservableProperty]
VerticalAlignment verticalAlignment;
[ObservableProperty]
Point location = new Point(11, 22);
}
public class ViewModelBase : ObservableObject
{
}
Привязка к нескольким объектам¶
PropertyGridControl может отображать и редактировать свойства, общие для двух или более объектов. Назначьте список этих объектов свойству PropertyGridControl.SelectedObjects. Это заставляет контрол отображать только совпадающие свойства (те, что имеют одинаковое имя и тип данных).
xmlns:mxpg="https://schemas.eremexcontrols.net/avalonia/propertygrid"
<mxpg:PropertyGridControl>
<mxpg:PropertyGridControl.SelectedObjects>
<local:MyList>
<local:MyBusinessObject1/>
<local:MyBusinessObject2/>
</local:MyList>
</mxpg:PropertyGridControl.SelectedObjects>
</mxpg:PropertyGridControl>
Создание строк¶
После привязки PropertyGrid к объекту (объектам) поведение контрола по умолчанию — автоматически генерировать строки для отображения и редактирования свойств привязанного объекта (объектов). Контрол автоматически генерирует следующие типы строк во время инициализации:
- Строки данных (объекты
PropertyGridRow) генерируются для всех публичных свойств. Эти строки отображают имена и значения привязанных свойств.
- Категориальные строки (объекты
PropertyGridCategoryRow) генерируются из атрибутовSystem.ComponentModel.CategoryAttribute, применённых к базовым публичным свойствам. Соответствующие строки данных группируются внутри этих категориальных строк.
PropertyGrid предоставляет следующие возможности настройки строк:
- Отключение автоматической генерации строк с помощью свойства
PropertyGridControl.AutoGenerateRows. - Ручное создание строк.
- Использование атрибутов Annotation для настройки параметров строк.
- Задание шаблонов данных для отрисовки отдельных строк.
- Генерация строк из коллекции View Model строк (
RowsSource).
Дополнительную информацию смотрите в следующем разделе: Строки.
* Эта страница переведена с использованием технологий машинного перевода.


