Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
myBtn.Foreground = new SolidColorBrush(Colors.Yellow);}Но можно ли представить эту сложную кисть в виде строки? Нет, нельзя! К счастью, в XAML предусмотрен специальный синтаксис, который можно использовать всякий раз, когда нужно присвоить сложный объект в качестве значения свойства; он называется синтаксисом "свойство-элемент".
Понятие синтаксиса "свойство-элемент" в XAML
Синтаксис "свойство-элемент" позволяет присваивать свойству сложные объекты. Ниже показано описание XAML элемента Button, в котором для установки свойства
BackgroundLinearGradientBrush<Button Height="50" Width="100" Content="OK!" FontSize="20" Foreground="Yellow"> <Button.Background> <LinearGradientBrush> <GradientStop Color="DarkGreen" Offset="0"/> <GradientStop Color="LightGreen" Offset="1"/> </LinearGradientBrush> </Button.Background></Button>Обратите внимание, что внутри дескрипторов
<Button></Button><Button.Backgrounds><LinearGradientBrush>Любое свойство может быть установлено с использованием синтаксиса "свойство-элемент", который всегда сводится к следующему шаблону:
<i><ОпределяющийКласс></i><i> <ОпределяющийКласс.СвойствоОпределяющегоКласса></i><i> <! -- Значение для свойства определяющего класса —></i><i> </ОпределяющийКласс.СвойствоОпределяющегоКласса></i><i></ОпределяющийКласс></i>Хотя любое свойство может быть установлено с применением такого синтаксиса, указание значения в виде простой строки, когда подобное возможно, будет экономить время ввода. Например, вот гораздо более многословный способ установки свойства
WidthButton<Button Height="50" Content="OK!"FontSize="20" Foreground="Yellow"> ... <Button.Width> 100 </Button.Width></Button>Понятие присоединяемых свойств XAML
В дополнение к синтаксису "свойство-элемент" в XAML поддерживается специальный синтаксис, используемый для установки значения присоединяемого свойства. По существу присоединяемое свойство позволяет дочернему элементу устанавливать значение свойства, которое определено в родительском элементе. Общий шаблон, которому нужно следовать, выглядит так:
<i><РодительскийЭлемент></i><i> <ДочернийЭлемент РодительскийЭлемент.СвойствоРодительскогоЭлемента</i><i>= "Значение"></i><i></РодительскийЭлемент></i>Самое распространенное применение синтаксиса присоединяемых свойств связано с позиционированием элементов пользовательского интерфейса внутри одного из классов диспетчеров компоновки (
GridDockPanel<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Canvas Height="200" Width="200" Background="LightBlue"> <Ellipse Canvas.Top="40" Canvas.Left="40" Height="20" Width="20" Fill="DarkBlue"/> </Canvas></Page>Здесь определен диспетчер компоновки
CanvasEllipseEllipseCanvasВ отношении присоединяемых свойств следует иметь в виду несколько моментов. Прежде всего, это не универсальный синтаксис, который может применяться к любому свойству любого родительского элемента. Скажем, приведенная далее разметка XAML содержит ошибку:
<b><!-- Попытка установки свойства Background в Canvas</b><b> через присоединяемое свойство. Ошибка! --></b><Canvas Height="200" Width="200"> <Ellipse Canvas.Background="LightBlue" Canvas.Top="40" Canvas.Left="90" Height="20" Width="20" Fill="DarkBlue"/>