Table of Contents

Привязка данных и создание строк

В этом разделе показано, как привязать PropertyGrid к одному или нескольким объектам. Контрол автоматически генерирует строки для публичных свойств привязанных объектов по умолчанию. Вы можете отключить автоматическую генерацию строк, создавать строки вручную, настраивать опции строк и указывать шаблоны строк.

Привязка к одному объекту

Используйте свойство PropertyGridControl.SelectedObject, чтобы привязать контрол к одному объекту. При привязке контрол автоматически отображает свойства объекта.

Пример

Следующий пример привязывает PropertyGrid к объекту MyBusinessObject, определенному в ViewModel.

propertygrid-sample

xmlns:mxpg="clr-namespace:Eremex.AvaloniaUI.Controls.PropertyGrid;assembly=Eremex.Avalonia.Controls"
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="clr-namespace:Eremex.AvaloniaUI.Controls.PropertyGrid;assembly=Eremex.Avalonia.Controls"

<mxpg:PropertyGridControl>
    <mxpg:PropertyGridControl.SelectedObjects>
        <local:MyList>
            <local:MyBusinessObject1/>
            <local:MyBusinessObject2/>
        </local:MyList>
    </mxpg:PropertyGridControl.SelectedObjects>
</mxpg:PropertyGridControl>
public class MyList : List<object>
{        
}

Создание строк

После привязки PropertyGrid к объекту (объектам) дефолтное поведение контрола заключается в автоматическом генерировании строк для отображения и редактирования свойств привязанного объекта(ов). Контрол автоматически генерирует следующие типы строк во время инициализации контрола:

  • Строки данных (объекты PropertyGridRow) генерируются для всех публичных свойств. В этих строках отображаются имена и значения привязанных свойств.

    data-rows

  • Категориальные строки (объекты PropertyGridCategoryRow) генерируются на основе атрибутов System.ComponentModel.CategoryAttribute, применяемых к нижележащим публичным свойствам. Соответствующие строки данных сгруппированы внутри этих категориальных строк.

    category-rows

PropertyGrid предоставляет следующие функции настройки строк:

  • Отключение автоматической генерации строк с помощью свойства PropertyGridControl.AutoGenerateRows.
  • Создание строк вручную.
  • Использование атрибутов аннотаций для настройки опций строк.
  • Указание шаблонов данных для отображения отдельных строк.
  • Генерация строк из коллекции моделей представления строк (RowsSource)

Смотрите следующий раздел для получения дополнительной информации: Строки .



* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.