Содержание
В .NET MAUI можно выделить два вида кнопок — это Button (обычные кнопки) и ImageButton (кнопка у которой в качестве содержимого выступает какая-либо картинка). Рассмотрим работу с этими компонентами управления.
С этой кнопкой мы сталкивались уже не раз. Button — это обычная кнопка, у которой можно выделить следующие полезные для нас свойства:
| Свойство | Тип | Описание |
BorderColor |
Color |
Цвет границы кнопки |
BorderWidth |
double | Толщина границы кнопки |
CharacterSpacing |
double | Определяет интервал между символами текста |
CornerRadius |
int | Радиус закругления углов кнопки |
FontAttributes, FontAutoScalingEnabled, FontFamily, FontSize |
Свойства для работы со шрифтом: оформление, масштабирование, семейство и размер шрифта. Подробное описание см. в этой части | |
LineBreakMode |
LineBreakMode |
Определяет как будет обрабатываться текст, если он не умещается в одну строку. Может принимать следующие значения:
|
Padding |
Определяет внутренние отступы элемента. Описание свойства см. в этой части | |
Text |
Текст кнопки | |
TextColor, TextTransform |
Свойства для работы с текстом: цвет и регистр текста. Подробное описание см. в этой части | |
Кроме этого, кнопка Button определяет три события:
Clicked— возникает, когда мы сделали клик по кнопкеPressed— возникает, когда мы зажали кнопку мыши (кнопка находится в нажатом состоянии)Released— возникает, когда мы отпустили кнопку.
Все три события имет тип EventHandler. Рассмотрим работу со свойствами и событиями кнопки Button. Создадим новое приложение .NET MAUI и изменим код файла MainPage.xaml.cs следующим образом:
public partial class MainPage : ContentPage
{
int count = 0;
public MainPage()
{
InitializeComponent();
}
private void OnCounterClicked(object sender, EventArgs e)
{
count++;
CounterBtn.Text = $"Нажата {count} раз";
CounterBtn.CornerRadius = 0;
}
private void OnCounterPressed(object sender, EventArgs e)
{
CounterBtn.Text = "Это очень длинный текст, который может не уместиться в одну строку, поэтому мы его будем усекать";
CounterBtn.Background = Color.FromRgb(255, 0, 0);
CounterBtn.CornerRadius = 20;
}
private void OnCounterReleased(object sender, EventArgs e)
{
CounterBtn.Background = Color.FromRgb(0, 0, 255);
CounterBtn.CornerRadius = 0;
}
}
Здесь мы определили обработчики для всех трех событий кнопки. Теперь цвет и текст кнопки будет изменяться в зависимости от её состояния. Теперь перейдем в файл MainPage.xaml и изменим код кнопки следующим образом:
<Button
x:Name="CounterBtn"
Text="Click me"
LineBreakMode="TailTruncation"
Clicked="OnCounterClicked"
Pressed="OnCounterPressed"
Released="OnCounterReleased"
HorizontalOptions="Fill" />
Запустим приложение и проверим результат. Так будет выглядеть кнопка при запуске приложения:
В нажатом состоянии
Обратите внимание на текст кнопки — окончание текста заменяется на многоточие. И, наконец, когда мы отпускаем кнопку:
Кнопка ImageButton содержит также, как и Button три события — Clicked, Pressed и Released, но, в отличие от Button, в качестве содержимого может использовать не текст, а какое-либо изображение. В связи с этим, у ImageButton определены следующие свойства:
| Свойство | Тип | Описание |
Aspect |
Aspect |
Определяет, как будет масштабироваться изображение, чтобы соответствовать области отображения. Может принимать следующие значения:
|
BorderColor |
Color |
Цвет границы кнопки |
BorderWidth |
double |
Толщина границы кнопки |
CornerRadius |
int |
Радиус закругления углов кнопки |
IsLoading |
bool |
Определяет состояние загрузки изображения |
IsOpaque |
bool |
Определяет, должна ли платформа .NET MAUI рассматривать изображение как непрозрачное. Значение по умолчанию false |
IsPressed |
bool |
Указывает нажата ли кнопка |
| Padding | Определяет внутренние отступы элемента. Описание свойства см. в этой части | |
Source |
ImageSource |
Источник изображения для кнопки |
Продемонстрируем работу с ImageButton, изменив файл MainPage.xaml следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp7.MainPage">
<ScrollView>
<VerticalStackLayout
Padding="30,0"
Spacing="25">
<ImageButton Aspect="AspectFit"
Clicked="OnCounterClicked"
Pressed="OnCounterPressed"
Released="OnCounterReleased"
Source="dotnet_bot.png"
BorderWidth="5"
BorderColor="Blue"
CornerRadius="10"/>
<Label
Text="Hello, World!"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label
Text="Welcome to .NET Multi-platform App UI"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to dot net Multi platform App U I" />
<Button
x:Name="CounterBtn"
Text="Click me"
LineBreakMode="TailTruncation"
Clicked="OnCounterClicked"
Pressed="OnCounterPressed"
Released="OnCounterReleased"
HorizontalOptions="Fill" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
Теперь то изображение, которое по умолчанию показывалось на странице приложение стало кнопкой:
<ImageButton Aspect="AspectFit"
Clicked="OnCounterClicked"
Pressed="OnCounterPressed"
Released="OnCounterReleased"
Source="dotnet_bot.png"
BorderWidth="5"
BorderColor="Blue"
CornerRadius="10"/>
Здесь мы также определили обработчики событий кнопки и установили ширину и цвет границы кнопки. Запустим приложение и посмотрим на результат:
Можете покликать по картинке и убедиться, что те события, которые мы определили у Button, также срабатывают.
Итого
Кнопки в .NET MAUI реагируют на три события — Clicked, Pressed и Released. При этом, мы можем использовать два вида кнопок: Button — обычная кнопка с текстовым содержимым и ImageButton — кнопка, у которой в качестве содержимого выступает какое-либо изображение.



