Изменение цвета кнопки при нажатии на неё в Avalonia
Как сделать так, чтобы при нажатии на кнопку в Avalonia UI её цвет изменялся? В интернете когда ничего найти по этому поводу не смог, либо там было что-то невнятное, либо эти статьи уже не найти.
Ответы (1 шт):
Вам надо модифицировать стиль для элемента управления Button
. Например так
<Grid RowDefinitions="Auto,*">
<Grid.Styles>
<Style Selector="Button:pressed /template/ ContentPresenter#PART_ContentPresenter">
<Setter Property="Background" Value="Red" />
<Setter Property="BorderBrush" Value="Green" />
<Setter Property="Foreground" Value="White" />
</Style>
</Grid.Styles>
<Button Grid.Row="0"
Content="Нажми меня"
HorizontalAlignment="Center" />
. . .
</Grid>
Значение селектора (Selector
) содержит строку, которая описывает для какого элемента управления мы будем применять стиль.
Если рассмотреть выше приведённый пример, то стиль будет применятся для ContentPresenter
c именем PART_ContentPresenter
, который в свою очередь являются частью шаблона (/template/
), реализующего Button
. Ну и вишенка на торте - псевдокласс (:pressed
), который указывает на то, что стиль будет применяться лишь, тогда когда кнопка нажата.
Описаний стилей и тем элементов управления Avalonia как таковых нет, но всё это доступно в иcходниках на GitHub. Для общего понимания, как работает этот механизм, можно почитать по следующим ссылкам: