Привязка данных и создание строк
В этом разделе показано, как привязать PropertyGrid к одному или нескольким объектам. Контрол автоматически генерирует строки для публичных свойств привязанных объектов по умолчанию. Вы можете отключить автоматическую генерацию строк, создавать строки вручную, настраивать опции строк и указывать шаблоны строк.
Привязка к одному объекту
Используйте свойство PropertyGridControl.SelectedObject
, чтобы привязать контрол к одному объекту. При привязке контрол автоматически отображает свойства объекта.
Пример
Следующий пример привязывает PropertyGrid к объекту MyBusinessObject, определенному в ViewModel.
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
) генерируются для всех публичных свойств. В этих строках отображаются имена и значения привязанных свойств.Категориальные строки (объекты
PropertyGridCategoryRow
) генерируются на основе атрибутовSystem.ComponentModel.CategoryAttribute
, применяемых к нижележащим публичным свойствам. Соответствующие строки данных сгруппированы внутри этих категориальных строк.
PropertyGrid предоставляет следующие функции настройки строк:
- Отключение автоматической генерации строк с помощью свойства
PropertyGridControl.AutoGenerateRows
. - Создание строк вручную.
- Использование атрибутов аннотаций для настройки опций строк.
- Указание шаблонов данных для отображения отдельных строк.
- Генерация строк из коллекции моделей представления строк (
RowsSource
)
Смотрите следующий раздел для получения дополнительной информации: Строки .
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.