В предыдущих темах мы рассмотрели определение элемента Button в коде XAML и установку ряда свойств через атрибуты:
<Button x:Name="messageButton" Width="120" Height="40" Content="Кнопка" HorizontalAlignment="Center" Background="Red" />
Height и Width являются простыми свойствами. Они хранят числовое значение. А например, свойство HorizontalAlignment
или Background
уже являются более сложными по своей структуре. Так, если мы будем определять эту же кнопку в коде c#, то нам надо использовать следующий набор инструкций:
Button messageButton = new Button(); messageButton.Content = "Кнопка"; messageButton.Width = 120; messageButton.Height = 40; messageButton.HorizontalAlignment = HorizontalAlignment.Center; messageButton.Background = new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Red);
Для определения выравнивания по центру используется перечисление HorizontalAlignment
, а для установки фонового цвета - класс
SolidColorBrush.
В коде XAML мы ничего такого не увидели и устанавливали эти свойства гораздо проще с помощью строк. Дело в том, что по отношению к коду XAML применяются специальные объекты - type conventer или конвертеры/преобразователи типов, которые могут преобразовать значения из XAML к тем объектам, которые мы используем в коде C#.
В то же время мы можем более явно использовать эти объекты в коде XAML:
<Button x:Name="messageButton" Width="120" Height="40" Content="Кнопка"> <Button.HorizontalAlignment> <HorizontalAlignment>Center</HorizontalAlignment> </Button.HorizontalAlignment> <Button.Background> <SolidColorBrush Opacity="0.5" Color="Red" /> </Button.Background> </Button>
Плюсом такого подхода является то, что у объектов мы можем установить дополнительные параметры. Так, в данном случае у объекта SolidColorBrush
кроме цвета также устанавливается и прозрачность (Opacity="0.5"
), что сложно сделать при сокращенном определении свойства Background="Red"