Разработване на универсални прозорци за кандидатстване 10

Във втората част на статията, посветена на данни обвързващи, и използването му за програмиране на Windows 10 универсални приложения.

2.5. Посоката на свързване

Нека да се кандидатира отново създадохме Bindings1 приложение, но сега ние се въведе стойност в полето за въвеждане на инча. Тъй като ние бързо предаде фокуса върху полето за въвеждане на сантиметри (например чрез натискане ), Като последната се появява само, че стойността въведена от нас. Както можете да видите, нашата задължителен труд не само в "напред" посока - от източника към приемника - но също и в "заден ход" - от приемника към източника.

универсални разработчиците на приложения в този случай казват, че две начин на свързване е създаден.

В раздел 2.4 споменахме собственост на свързването класа режим. Тя просто задава посоката, в която работата ще е задължителен. И тъй като стойността му показва един от елементите, изброени BindingMode:

  • Двупосочна - задължителен двупосочна, ние вече разгледа.
    След като стойността на приемника се променя, тя веднага се изпраща на свързания източник имота. Изключение е Текст собственост. трансферна стойност се извършва само след контролен елемент губи фокуса (както видяхме по-рано);
  • Еднопосочен - свързване еднопосочен. оперира само в "напред" посока - от източника към приемника. Това изисква по-малко системни ресурси в сравнение двупосочна, тъй като не е необходимо да се следи промяната в стойността на имота на приемника и съответно го носите на източника;
  • OneTime - един етап на свързване. характеризира с еднопосочно, така че трансферната стойност се извършва само веднъж, веднага след приложението се стартира. Когато операцията по програма не изисква системни ресурси, веднага след като трансферната стойност на свързване е изтрит.

Посочете посоката на свързване, което можем като диалогов прозорец сме знаели, създаване на задължителен за данни. Ние го извлече по същия начин, както го направи преди това: квадратен натискане на бутон, разположен отдясно на необходимия контрол в панела Properties. и изберете от менюто, което се появява Създаване задължителен за данни.

В групата на прозореца razvernom контролира повече параметри (фиг. 7). Ще бъде на разположение падащото задължителен посока (режим). в която, за да изберете желаната опция.

Разработване на универсални прозорци за кандидатстване 10

Фиг. 7. В диалоговия прозорец Създаване на данни за свързване (група разгърнати повече параметри)

Като експеримент, можем да посочим в нашия задължителен посока еднопосочен (тоест, да се създаде еднопосочен задължителен). В този случай, при въвеждане на нова стойност в полето за въвеждане на инча (т.е. приемник), тази стойност няма да бъде прехвърлено към източника - областта сантиметра. Дори и след загубата на първото поле на входния фокус.

А свързване с посоката OneTime (едноетапно), в този случай обикновено безполезно. След като приложението се стартира, стойността на полето сантиметра входните - празен ред - ще бъдат прехвърлени към Поле за въвеждане на сантиметри. след което свързването вече няма да работят. И че няма да бъдат въведени в първото поле, вторият ще остане празен.

2.6. Използването на предаватели на ценности

Изглежда, че ние написахме заявление за преобразуване на стойности от инча до сантиметър и обратно. Тогава защо е стойността въведена от нас се прехвърля, какъвто е, без каквато и реализация? Нека да поправя това.


2.6.1. Създаване на стойност преобразуватели

задължителен UWP данни ви позволява да конвертирате ценности, извършени от един формат в друг - това е една от най-съвременните характеристики, които бяха споменати по-рано в тази статия. За тази цел, така наречените ценности на преобразувателите.

Стойността на конвертор трябва да е клас, който реализира интерфейс IValueConverter. което е обявено в пространството от имена Windows.UI.Xaml.Data. Този интерфейс поддържа два метода:

  • Конвертиране - извършва преобразуването при прехвърляне на "напред" посока - от източника към приемника;
  • ConvertBack - извършва преобразуване по време на прехвърлянето на "обратна" посока - от източника към приемника.

И двете от тези методи да вземе един и същ набор от аргументи:

  • действителната стойност трябва да се преобразува - тип System.Object;
  • тип наименование, в която трябва да се преобразува, - съответен елемент предварително определено прехвърляне System.Type;
  • допълнителен аргумент може да бъде определен в параметрите на свързване - тип System.Object (всъщност този аргумент може да бъде от всякакъв вид). Може да се използва, например, за да изберете превръщането на режим от наличните комплект;
  • обозначение език и култура, с оглед на което преобразуването трябва да се извърши, - низ.

Добавяне на нов елемент на проекта Visual Studio, като например файл с програма C # -code, по три начина. На първо място, това е възможно да се намери в йерархичен списък, който е в панела Solution Explorer. "Клон", което представлява самия проект (в този случай, "клон" Bindings1 (Universal Windows)), щракнете с десния бутон на мишката, изберете изскачащия прозорец на екрана, т контекстното меню да добавите. и в подменюто, който се появява, след като - параграф на нов елемент. Второ, можете да кликнете върху Добавяне на елемент от менюто Нов проект. На трето място, можете да натиснете клавишната комбинация ++.

След някое от тези действия на екрана се появява диалогов прозорец Add New т прозорец (фиг. 8) на. Списъкът в средата на прозореца, изберете типа на елемента, трябва да се добави (в нашия случай -. Ал клас, тъй като ние ще се добави към файл с код, където пишем рекламите на новата класа), въведете името на файла, за да бъде създаден в полето Име и кликнете Добавяне.

Разработване на универсални прозорци за кандидатстване 10

Фиг. 8. В диалоговия прозорец Добавяне на нов елемент

Ако искате да добавите към проекта е файл с код, можете да направите по-лесно. Има два начина. На първо място, като кликнете с десния бутон на мишката върху "клоновете" на екрана за йерархичен списък в Solution Explorer. който представя проекта и изберете Add Class т подменюто. На второ място, изберете проекта за добавяне клас меню. В този случай, в списъка на отворения прозорец Добавяне на нов елемент е е избран клас елемент.

Клас CIConverter пълен код е показано по-долу (израз вносител на имена, които са в самото начало на кода и да поставят най-Visual Studio, са пропуснати за краткост).

Като универсална приложение, създадено в статията в проучване, "Развитие на Windows 10. Най-универсалното прилагане е първото приложение", за преобразуване на стойностите, посочени в текстовото поле (както вече знаем, тя се съхранява в Текст имота като низ), в броя използвахме статичен метод разбор клас System.Double. Въпреки това, има сериозен проблем, когато се опитват да конвертирате низ, така че съхраняване на нищо друго, освен с плаваща запетая, този метод хвърля изключение и спира изпълнението на програмата. Ние трябва да се премахне този неприятен момент.

Ето защо, ние сме с помощта на статичен метод TryParse. Това отнема два аргумента, първият от които - действителната преобразувания низ, а вторият е изход, и съхранява броя на - резултат трансформация. Ако преобразуването е успешно, методът връща истина. в противен случай - невярно.

Въз основа на това, че е лесно да се разбере как двата метода само писмени CIConverter клас контакт. Декларираме променлива тип ет двойно (в C # терминология, така че определено System.Double клас) и да го зададете 0. Сега ние се опитваме да конвертирате, изброени в поле за въвеждане низ (след я извежда на тип низ, защото, както си спомняме, методът на инвертор го "влиза" тип System.Object стойност) и, ако превръщането е била успешна, извършване на необходимите изчисления и връща резултата.

Имайте предвид, че върнатия резултат, ние изрично се превърнат в низ като се обадите на метода ToString. Това е да се гарантира, че получената стойност се показва на екрана на настройките система локал (например, в числа с плаваща запетая с руски Windows ще бъдат показани със запетая като десетичен разделител).

Сега запазете на проекта и да преминат към файла с интерфейс начална страница XAML-кода. Ние ще добавим просто ни писмено конверторни ресурси страницата си и го насочи към настройките на задължителни.

За съжаление, Visual Studio не предоставя никакви инструменти, които да работят с ресурсни страници и приложения, така че ние ще трябва да въведете необходимата кода на страниците на XAML-описание ръчно интерфейс. Този код е показано по-долу; трябва да се добавя веднага след откриването .

Този код се поставя в един ресурс страниците на речника нашия клас CIConverter. разположена в пространството от имена на XAML под името на местна - е пространството от имена на нашите приложения - и го прави достъпно чрез "CI" ключ.

Освен това, ние ви препоръчваме да се изгради решението на Visual Studio е в състояние да "намери" нашата кола и го въвеждат в диалоговия прозорец, създаване на задължителен за данни. Агрегатът може да се направи, като изберете Build Solution Build Меню или чрез натискане на комбинация от клавиши ++.

След това диалоговия прозорец Създаване задължителен за нашите автомати за данни се извлече. Тук е необходимо да падащия списък конвертор. където сме избрали ключа, при които ни конвертор е на разположение (това е ключ "CI").

Веднага след като сме избрали в списък конвертор конвертор кутия ще се предлага въвеждане ConverterParameter. В него стойността на незадължителен аргумент се съхранява да се предава и методи Конвертиране ConvertBack клас конвертор (трети аргумент сметка тези методи, данни за описаните по-горе).

И накрая, запишете проекта и стартирате приложението, за да се изпълнява. В полето за въвеждане сантиметри да въвеждат каквито и номер и ще видим какво ще се появи в полето за въвеждане на инча; След това zanesom произволен брой в полето инча входните и да видим колко ще е в сантиметри. Като цяло, ние виждаме, че нашата молба вече е напълно функционален (фиг. 9).

Разработване на универсални прозорци за кандидатстване 10

Фиг. 9. Напълно функциониращ заявление Bindings1


2.6.2. Още няколко думи за конвертор стойност

Трябва да се каже, че необходимостта от двупосочен задължителен случва рядко. Много по-често се прилага на практика еднопосочен задължителен. Ако този задължителен използва стойност конвертор, няма абсолютно никаква нужда да се приложат превръщането на "обратната" посока.

В този случай, метод ConvertBack тяло да се постави експресията, която генерира isklyuchanie System.NotImplementedException:

В стойности конвертор XAML-код на предния край е показан от свойствата на свързване клас конвертор. Стойността на предава датчик допълнителен аргумент (третото аргумент сметка Конвертиране методи и ConvertBack) може да се настрои в ConverterParameter собственост; ако стойността се тълкува като показател за нейния ред в кода на интерфейс. В ConverterLanguage имот може да се даде наименованието на езика и културата, която ще бъде предавана на метод и ConvertBack конвертор Конвертиране на четвъртия аргумент; Тази стойност се посочи като низ.

Тук трябва да се отбележи, че самата платформа UWP, ако е необходимо, се преобразува стойностите, различни от низове, тип низ. Въпреки това, резултатът в този случай не може да бъде това, което имаме нужда; да речем, броят се превръща в низ, без да се има предвид езиковите настройки (числа с плаваща запетая се извеждат с точката, като десетична), както и датата - дълъг низ, съдържащ също време. Затова, ако искате да покажете данни на екрана в точно определен формат, се препоръчва да се използва подходящ конвертор стойност.

Във версията на Windows 10, 1607 (годишнина Актуализация) добавя поддръжка за превръщането на логически елементи на количествата в Видимостта обява. Стойността се превръща вярно Вижда елемент. и невярно - в свито. Това преобразуване се извършва чрез UWP на платформата; ние не трябва да се предприемат за неговото прилагане не се предприемат действия.

Внимание!
Описаният по-горе функция няма да работи в по-ранните версии на Windows 10.

2.7. създаване на софтуер автомати

Понякога може да е полезно да се установи задължителна програмно в C # приложения функция-код. Това може да бъде полезно, ако искате да щракне-приемник елемент за различни източници, в зависимост от някои условия, или да използвате един и същ обект прилепване към различни елементи.

създаване на софтуер за свързване се извършва на три етапа.

В първия етап създава подвързване обект клас. Неговият конструктор не се предава никакви аргументи.

Във втория етап показва параметрите, установени от свързването на: източникът да се сдружават на източника имота, задължителен посока и стойностите на датчиците, ако е необходимо. Тези параметри са определени с помощта на изследвани преди свързващи свойства класа:

  • ElementName - името на изходния елемент - като низ;
  • Path - повторното свързване източник елемент имот - PropertyPath като клас обект. Името на низ от Имотът е разположен в конструктора на този клас само аргумент;
  • Изглед - свързване посока - като трансфер BindingMode елемент;
  • Конвертор - конвертор ценности - във формата на съответния клас на обект;
  • ConverterParameter - допълнителен аргумент за стойностите на инвертори - могат да бъдат от всякакъв вид;
  • ConverterLanguage - обозначение на езика и културата - под формата на линия.

Третият етап съответства на свързване-приемник елемент и неговото имущество. За този метод за цел SetBinding. причинява приемника и отнема два аргумента:

  • зависимост имот - под формата на определяне на зависимостта собственост;
  • колче - под формата на новосъздадения обект на клас задължително.

Ето един пример за създаване на задължителен за нашата молба в кода на функцията (ако приемем, че полето за въвеждане - приемникът има txtInches име):

За да работи успешно този код, ние, в допълнение към посочва името на втория вход поле също така ще трябва да се премахне фиксирания курс, създадена преди това с използването на визуални инструменти Visual Studio, XAML-в код. Това може да стане, като кликнете върху едни и същи квадратен бутона, който се намира от дясно на панела Параметри поле за въвеждане текст. и изберете от т Начално състояние на поп-меню.

допълнителни материали