ContentView многоплатформенного пользовательского интерфейса приложений .NET (.NET MAUI) — это элемент управления, который позволяет создавать пользовательские, многократно используемые элементы управления.
Класс ContentView определяет свойство Content типа View, представляющее содержимое ContentView. Это свойство поддерживается объектом BindableProperty, что означает, что оно может быть целевым объектом для привязки данных и может быть стилизовано.
ContentView может содержать только один дочерний элемент.
Создание пользовательского элемента управления
Класс ContentView предлагает небольшие функциональные возможности, но можно использовать для создания пользовательского элемента управления. Процесс создания пользовательского элемента управления состоит в том, чтобы:
Создайте класс, производный от класса ContentView.
Определите все свойства или события элемента управления в файле кода для пользовательского элемента управления.
Определите пользовательский интерфейс для пользовательского элемента управления.
В этой статье показано, как создать элемент управления CardView, который представляет собой элемент пользовательского интерфейса, отображающий изображение, название и описание в макете карты.
Создание класса, производного от ContentView
Класс, производный от ContentView, можно создать с помощью шаблона элемента ContentView в Visual Studio. Этот шаблон создает XAML-файл, в котором можно определить пользовательский интерфейс для пользовательского элемента управления, а также файл программной части, в котором можно определить любые свойства, события и другую логику.
Определение свойств элемента управления
Все свойства элемента управления, события и другая логика должны быть определены в файле программной части для класса, производного от ContentView.
Настраиваемый элемент управления CardView определяет следующие свойства:
CardTitle, который типа string, обозначает заголовок, отображаемый на карточке.
CardDescriptionтипа string, который представляет описание, показанное на карточке.
IconImageSourceтипа ImageSource, представляющий изображение, которое показано на карточке.
IconBackgroundColorтипа Color, обозначающий цвет фона изображения на карточке.
BorderColorтипа Color, который обозначает цвет границы карточки, рамки изображения и разделительной линии.
CardColor— это тип Color, который обозначает цвет фона карточки.
Пользовательский интерфейс элемента управления можно определить в XAML-файле для класса, производного от ContentView, который использует ContentView в качестве корневого элемента элемента управления.
Элемент ContentView задает свойству x:Name значение this, которое можно использовать для доступа к объекту, привязанного к экземпляру CardView. Элементы в наборе макетов привязывают свойства к значениям, определенным в связанном объекте. Для получения дополнительной информации о привязке данных см. Привязка данных.
Примечание
Свойство FallbackValue в выражении Binding предоставляет значение по умолчанию, если привязка null.
Создание экземпляра пользовательского элемента управления
Ссылка на пользовательское пространство имен элемента управления должна быть добавлена на страницу, которая создает экземпляр пользовательского элемента управления. После добавления ссылки можно создать экземпляр CardView и определить его свойства:
XAML
<ContentPagexmlns="http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"xmlns:controls="clr-namespace:CardViewDemo.Controls"x:Class="CardViewDemo.CardViewXamlPage"><ScrollView><StackLayout><controls:CardViewBorderColor="DarkGray"CardTitle="Slavko Vlasic"CardDescription="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla elit dolor, convallis non interdum."IconBackgroundColor="SlateGray"IconImageSource="user.png" /><!-- More CardView objects --></StackLayout></ScrollView></ContentPage>
На следующем снимка экрана показано несколько объектов CardView:
Настройка внешнего вида с помощью ControlTemplate
Пользовательский элемент управления, производный от класса ContentView, может определять интерфейс с помощью XAML или кода, или вообще не определять его.
ControlTemplate можно использовать для переопределения внешнего вида элемента управления независимо от того, как определяется этот внешний вид.
Например, макет CardView может занять слишком много места для некоторых вариантов использования. Для переопределения макета CardView можно использовать ControlTemplate, чтобы обеспечить более компактное представление, подходящее для сжатого списка:
Привязка данных в ControlTemplate использует расширение разметки TemplateBinding для указания привязок. Затем свойство ControlTemplate можно задать для определенного объекта ControlTemplate с помощью его x:Key значения. В следующем примере показано, как свойство ControlTemplate задаётся для экземпляра CardView.
На следующем снимке экрана показан стандартный экземпляр CardView и несколько экземпляров CardView, у которых переопределены шаблоны элементов управления.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET MAUI
.NET MAUI — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Узнайте, как выровнять представления MAUI .NET в макете со свойствами HorizontalOptions и VerticalOptions, а также как размещать элементы управления с помощью свойств Margin и Padding.
Узнайте, как использовать класс границы .NET MAUI Border, который является элементом управления контейнером, который рисует границу, фон или оба элемента управления вокруг другого элемента управления.
В .NET MAUI ListView отображается прокручиваемый вертикальный список элементов данных, доступных для выбора. ListView поддерживает отображение заголовков и нижних колонтитулов, группированных данных, вытягивания к обновлению и контекстного меню.
Привязываемые макеты .NET MAUI позволяют классам макетов создавать их содержимое путем привязки к коллекции элементов, при этом можно задать внешний вид каждого элемента с помощью DataTemplate.