Привязка данных и создание строк¶
В этом разделе показано, как привязать 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.
- Ручное создание строк.
- Использование атрибутов аннотаций для настройки опций строк.
- Задание шаблонов данных для отображения отдельных строк.
- Создание строк из коллекции моделей представления строк (RowsSource)
Дополнительные сведения см. в следующем разделе: Строки .
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.