Что почитать: свежие записи из разных блогов

Записи с тэгом #WPF из разных блогов

Luar Soll, блог «Программизмы»

* * *

О кастомизации элементов управления:

User Control - объединить несколько контролов в один (если, например, какая-то комбинация их встречается часто)

Custom Control - собственно кастомные элементы, могут быть унаследованы от Control (или еще более общих вещей) и отрисованы с нуля, могут быть унаследованы от чего-то более конкретного и менять его работу

Control Template - когда надо радикально поменять вид, но сохранить функциональность

 

Для анимации изменения какого-нибудь параметра Control-а (например, высоты) можно использовать Storyboard. Style и Template можно менять в зависимости от действий пользователя (или отображаемых данных)

 

О browser-like навигации

Работая с навигацией между страницами (в веб-приложении или в Standalone) можно сделать на странице Frame, в котором тоже будет навигация между страницами, и в истории навигации будет запоминаться и то, как менялся Frame тоже (можно объединить это в в одной паре стрелочек Back и Forward, можно в Frame встроить свою)

 

Luar Soll, блог «Программизмы»

* * *

- В XAML написано, к какому классу относится этот XAML. При сборке приложения берется XAML, по нему определяется, какой нужен класс, и лишь затем создается объект класса

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

- Первое созданное в приложении окно по умолчанию считается главным

- Если на старте приложения (функция Startup) надо только открыть окно (или страницу в браузерном приложении), то можно не писать функцию Startup (может называться по-другому) в коде, а указать это окно или страницу в XAML приложения

- В функции Startup (может называться по-другому) происходит обработка аргументов командной строки

- В XAML можно указать сопоставление событий и функций обработки событий (например, указать функции обработки активации/деактивации окна)

- Можно поймать в дверях Unhandled Exception с помощью обработчика DispatcherUnhandledException и как минимум более корректно завершить работу приложения и сказать пользователю об ошибке. А как максимум сделать, чтобы приложение продолжило работу

 

 

Luar Soll, блог «Программизмы»

Еще конспекта про WPF и DataBinding кусок

- Мы можем привязываться не только полностью к Collection View, но также и к "текущему" элементу коллекции и к определенному полю внутри коллекции. Возможны вложенные коллекции и привязка к их View. "Текущий элемент" - например, последний выделенный

- DataTemplate - как именно отображать элемент Collection View в UI. Позволяет не только выбрать информацию к отображению, но и "сделать красиво" (причем по-разному в зависимости от параметров отображаемого элемента коллекции). То, что не зависит от параметров отображаемого элемента, лучше настраивать через настройки UI в целом

- Возможно выбирать конкретный Template в зависимости от параметров элемента Collection View (и отображать элементы _совсем_ по-разному), но это уже делается в коде

- ValidationRule - проверка того, что введенные в элемент UI данные можно конвертировать в привязанную к этому элементу переменную. Есть стандартные, можно создавать свои. Как именно выглядит уведомление об ошибке - тоже можно задавать

- Валидация может быть как до конвертации строки в значение (например, что в строке число), так и после (например, что это число в указанных пределах). Также может быть какая-то валидация после присвоения значения привязанной переменной

- По умолчанию ListBox, привязанный к коллекции, берет от элемента .ToString, и иногда достаточно переопределить ToString

- Реально дофига всего можно сделать с Data Binding именно через XAML, не залезая в код. Например, привязаться к Enum. Или задать конкретные параметры для функции валидации

 

Если создается пользовательский класс, объект которого к чему-то привязывается, то:

- Если будет передача данных от объекта, то нужны уведомления об изменениях

- Свойства объекта, используемые при привязке, должны быть public

- Невозможно привязаться к полям

 

MSDN можно переключить на американскую версию. Но для этого нужно прокрутить до самого низа страницы. Там слева будет переключатель.

Luar Soll, блог «Программизмы»

Конспекты продолжаются

- Если вы пытаетесь создать объект не существующего класса, то VS2015 предложит вам создать этот класс и даже покажет превью

- По буквосочетанию In подсказка VS2015 выдаст не только Input, но и LoadInput. Но не Window, потому что ориентируется на то, что значимые слова в имени переменной/функции начинаются с больших букв. Иногда можно набрать только большие буквы и получить функцию целиком (OSI -> OpenStandardInput)

- Ctrl делает подсказку от IntelliSense прозрачной

- В WPF возможен Binding коллекций. Для этого нужен CollectionView. Сначала в ресурсах нужно привязать CollectionViewSource к коллекции (и дать ему имя), потом параметр ItemsSource элемента интерфейса (например, ListBox) к CollectionViewSource (с конкретным именем). Еще у коллекций есть View по умолчанию, можно привязываться просто к нему. Если мы сортируем/фильтруем ListBox, то это влияет на привязанный View, но не на саму коллекцию


Лучшее   Правила сайта   Вход   Регистрация   Восстановление пароля

Материалы сайта предназначены для лиц старше 16 лет (16+)