Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 478 479 480 481 482 483 484 485 486 ... 642

  myBtn.Foreground = new SolidColorBrush(Colors.Yellow);

}

Но можно ли представить эту сложную кисть в виде строки? Нет, нельзя! К счастью, в XAML предусмотрен специальный синтаксис, который можно использовать всякий раз, когда нужно присвоить сложный объект в качестве значения свойства; он называется синтаксисом "свойство-элемент".

Понятие синтаксиса "свойство-элемент" в XAML

Синтаксис "свойство-элемент" позволяет присваивать свойству сложные объекты. Ниже показано описание XAML элемента Button, в котором для установки свойства Background применяется объект LinearGradientBrush:

<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>. (Пока не беспокойтесь о коде кисти; вы освоите графику WPF в главе 26.)

Любое свойство может быть установлено с использованием синтаксиса "свойство-элемент", который всегда сводится к следующему шаблону:

<i>&lt;ОпределяющийКласс&gt;</i>

<i>  &lt;ОпределяющийКласс.СвойствоОпределяющегоКласса&gt;</i>

<i>      &lt;! -- Значение для свойства определяющего класса —&gt;</i>

<i>  &lt;/ОпределяющийКласс.СвойствоОпределяющегоКласса&gt;</i>

<i>&lt;/ОпределяющийКласс&gt;</i>

Хотя любое свойство может быть установлено с применением такого синтаксиса, указание значения в виде простой строки, когда подобное возможно, будет экономить время ввода. Например, вот гораздо более многословный способ установки свойства Width элемента Button:

&lt;Button Height=&quot;50&quot; Content=&quot;OK!&quot;

FontSize=&quot;20&quot; Foreground=&quot;Yellow&quot;&gt;

  ...

  &lt;Button.Width&gt;

    100

  &lt;/Button.Width&gt;

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

&lt;/Button&gt;

Понятие присоединяемых свойств XAML

В дополнение к синтаксису "свойство-элемент" в XAML поддерживается специальный синтаксис, используемый для установки значения присоединяемого свойства. По существу присоединяемое свойство позволяет дочернему элементу устанавливать значение свойства, которое определено в родительском элементе. Общий шаблон, которому нужно следовать, выглядит так:

<i>&lt;РодительскийЭлемент&gt;</i>

<i>  &lt;ДочернийЭлемент РодительскийЭлемент.СвойствоРодительскогоЭлемента</i>

<i>= &quot;Значение&quot;&gt;</i>

<i>&lt;/РодительскийЭлемент&gt;</i>

Самое распространенное применение синтаксиса присоединяемых свойств связано с позиционированием элементов пользовательского интерфейса внутри одного из классов диспетчеров компоновки (Grid, DockPanel и т.д.). Диспетчеры компоновки более подробно рассматриваются в главе 25, а пока введите в редакторе Kaxaml следующую разметку:

&lt;Page

  xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;

  xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&gt;

  &lt;Canvas Height=&quot;200&quot; Width=&quot;200&quot; Background=&quot;LightBlue&quot;&gt;

    &lt;Ellipse Canvas.Top=&quot;40&quot; Canvas.Left=&quot;40&quot; Height=&quot;20&quot;

        Width=&quot;20&quot; Fill=&quot;DarkBlue&quot;/&gt;

  &lt;/Canvas&gt;

&lt;/Page&gt;

Здесь определен диспетчер компоновки Canvas, который содержит элемент Ellipse. Обратите внимание, что с помощью синтаксиса присоединяемых свойств элемент Ellipse способен информировать свой родительский элемент (Canvas) о том, где располагать позицию его левого верхнего угла.

В отношении присоединяемых свойств следует иметь в виду несколько моментов. Прежде всего, это не универсальный синтаксис, который может применяться к любому свойству любого родительского элемента. Скажем, приведенная далее разметка XAML содержит ошибку:

<b>&lt;!-- Попытка установки свойства Background в Canvas</b>

<b>     через присоединяемое свойство. Ошибка! --&gt;</b>

&lt;Canvas Height=&quot;200&quot; Width=&quot;200&quot;&gt;

  &lt;Ellipse Canvas.Background=&quot;LightBlue&quot;

           Canvas.Top=&quot;40&quot; Canvas.Left=&quot;90&quot;

           Height=&quot;20&quot; Width=&quot;20&quot; Fill=&quot;DarkBlue&quot;/&gt;

1 ... 478 479 480 481 482 483 484 485 486 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий