Робота з даними Windows Runtime

Почнемо з того, що для реалізації привязки використовується обєкт типу Binding Незалежно від того, повязуєте Ви елементи або елемент і дані, завжди використовується саме Binding При цьому Binding можна абсолютно спокійно використовувати як в коді, так і в розмітці XAML

Природно, що використання Binding в XAML – найпоширеніша ситуація Для цих цілей в XAML існує спеціальне розширення розмітки, про який ми трохи вже згадували в розділі 4 Розглянемо невеликий приклад:

&ltPage x:Class=&quotChapter5_BindingMainPage&quot xmlns=&quothttp://schemasmicrosoftcom/winfx/2006/xaml/presentation&quot xmlns:x=&quothttp://schemasmicrosoftcom/winfx/2006/xaml&quot xmlns:d=&quothttp://schemasmicrosoftcom/expression/blend/2008&quot xmlns:mc=&quothttp://schemasopenxmlformatsorg/markup-compatibility/2006&quot&gt

&ltGrid Background=&quot{StaticResource ApplicationPageBackgroundBrush}&quot VerticalAlignment=&quotCenter&quot&gt

&ltStackPanel x:Name=&quotLayoutRoot&quot&gt

&ltImage Source=&quotAssets/hydrangeasjpg&quot Width=&quot400&quot&gt

&ltImageProjection&gt

&ltPlaneProjection RotationY=

&quot{Binding Value, ElementName=slider}&quot&gt

&lt/PlaneProjection&gt

&lt/ImageProjection&gt

&lt/Image&gt

&ltSlider Minimum=&quot0&quot Maximum=&quot360&quot Name=&quotslider&quot Width=&quot400&quot Margin=&quot10&quot&gt&lt/Slider&gt

&lt/StackPanel&gt

&lt/Grid&gt

&lt/Page&gt

Тут ми створили елемент управління Image, Який хочемо «обертати» по осі

Y Для створення ефекту розміщення елемента в тривимірному просторі використовується обєкт PlaneProjection, Що містить властивість RotationY, Яке задає кут повороту елемента по осі Y Щоб зробити наш інтерфейс більш динамічним, другим елементом ми додали повзунок, який і буде задавати кут повороту Тут ми використовуємо два параметра:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Path – Дозволяє задати властивість джерела, з яким відбувається звязування Оскільки це властивість є властивістю за замовчуванням, то явно Path можна не писати

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp ElementName – Задає імя елемента-джерела

У даному прикладі незалежно від того, як Ви вносите властивість Value

бігунка, властивість RotationY оновлюватиметься автоматично

Привязку можна реалізувати і по-іншому:

&ltPage x:Class=&quotChapter5_BindingMainPage&quot xmlns=&quothttp://schemasmicrosoftcom/winfx/2006/xaml/presentation&quot xmlns:x=&quothttp://schemasmicrosoftcom/winfx/2006/xaml&quot xmlns:d=&quothttp://schemasmicrosoftcom/expression/blend/2008&quot xmlns:mc=&quothttp://schemasopenxmlformatsorg/markup-compatibility/2006&quot&gt

&ltGrid Background=&quot{StaticResource ApplicationPageBackgroundBrush}&quot VerticalAlignment=&quotCenter&quot&gt

&ltStackPanel x:Name=&quotLayoutRoot&quot &gt

&ltImage Source=&quotHydrangeasjpg&quot Width=&quot400&quot&gt

&ltImageProjection&gt

&ltPlaneProjection x:Name=&quotprojection&quot&gt&lt/PlaneProjection&gt

&lt/ImageProjection&gt

&lt/Image&gt

&ltSlider Minimum=&quot0&quot Maximum=&quot360&quot Name=&quotslider&quot Width=&quot400&quot Margin=&quot10&quot

Value=

&quot{Binding RotationY, ElementName=projection, Mode=TwoWay}&quot&gt

&lt/Slider&gt

&lt/StackPanel&gt

&lt/Grid&gt

&lt/Page&gt

У цьому прикладі в якості джерела виступає зображення Відмінність полягає в тому, що, виконуючи привязку повзунка до зображення, ми вказали додаткове властивість Mode Ця властивість може приймати одне з трьох значень:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp OneTime – Значення властивості встановлюється на підставі значення властивості джерела, але установка відбувається лише в момент створення обєктів Будь-які зміни в майбутньому ігноруються

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp OneWay – Значення властивості встановлюється на підставі значення властивості джерела При зміні властивості джерела буде оновлюватися властивість основного обєкта

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp TwoWay – Значення властивості встановлюється на підставі значення властивості джерела При зміні властивості джерела або властивості основного обєкта, відбуватимуться взаємні оновлення

У нашому прикладі ми встановили значення TwoWay властивостіMode Таким чином, незважаючи на те, що картинка є джерелом, її поворот успішно задається повзунком

Вибір джерела залежить від конкретного додатка Так, в прикладі вище вибір джерела був не принциповий, але якщо ми вирішимо додати додатковий елемент, що модифікує значення кута повороту, то встановити властивості два елементи Binding нам не вдасться, а от змінити напрямок привязки можна Приклад нижче розширює наш інтерфейс текстовим полем, яке також задає кут повороту

&ltPage x:Class=&quotChapter5_BindingMainPage&quot xmlns=&quothttp://schemasmicrosoftcom/winfx/2006/xaml/presentation&quot xmlns:x=&quothttp://schemasmicrosoftcom/winfx/2006/xaml&quot xmlns:d=&quothttp://schemasmicrosoftcom/expression/blend/2008&quot xmlns:mc=&quothttp://schemasopenxmlformatsorg/markup-compatibility/2006&quot&gt

&ltGrid Background=&quot{StaticResource ApplicationPageBackgroundBrush}&quot VerticalAlignment=&quotCenter&quot&gt

&ltStackPanel x:Name=&quotLayoutRoot&quot&gt

&ltImage Source=&quotAssets/hydrangeasjpg&quot Width=&quot400&quot&gt

&ltImageProjection&gt

&ltPlaneProjection x:Name=&quotprojection&quot&gt&lt/PlaneProjection&gt

&lt/ImageProjection&gt

&lt/Image&gt

&ltSlider Minimum=&quot0&quot Maximum=&quot360&quot Name=&quotslider&quot Width=&quot400&quot Margin=&quot10&quot

Value=

&quot{Binding RotationY, ElementName=projection, Mode=TwoWay}&quot&gt

&lt/Slider&gt

&ltTextBox Width=&quot200&quot  Text=

&quot{Binding RotationY, ElementName=projection, Mode=TwoWay}&quot&gt&lt/TextBox&gt

&lt/StackPanel&gt

&lt/Grid&gt

&lt/Page&gt

Зверніть увагу, що в цьому прикладі дію значення, введеного вTextBox, набуде чинності лише при втраті фокуса елементом TextBox Це повязано з тим, що поведінка властивостей при реалізації привязки може відрізнятися Щоб задати поведінку властивості, використовують метадані (атрибути) У свою чергу, метадані для TextBox задані таким чином, що їм потрібна втрата фокусу текстового поля, щоб провести оновлення Для елемента TextBox це цілком обгрунтовано

Нарешті, якщо Ви хочете встановити привязку до даних в коді, то це також можна зробити без проблем Ось як виглядатиме код для TextBox з нашого прикладу:

Binding binding = new Binding() bindingElementName = &quotprojection" bindingPath = new PropertyPath(&quotRotationY&quot) bindingMode = BindingModeTwoWay

txtBoxSetBinding(TextBoxTextProperty, binding)

Перейдемо тепер від привязки до елементів до привязки до обєктів, які не є елементами управління

Сергій Лутай, Сергій Байдачний, Windows 8 для C # розробників

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*