Pull to refresh
11
1.5
Вячеслав Смитюх @Viacheslav01

Пользователь

Send message

Расширение функциональности элементов управления Windows с помощью AttachedProperty

Reading time4 min
Views11K


Краеугольным камнем разработки приложений для Windows (WPF, SilverLight, WP, WinRT) является паттерн MVVM. Который основан на концепции связывания данных модели представления и пользовательского интерфейса, что позволяет, используя декларативное описание UI посредством XAML избавится от codebehind (так я и не придумал/нашел русского перевода) и перенести всю логику работы с пользовательским интерфейсом в модель представления.

К сожалению, реализовать все возможные функции в фреймвоках производителю физически невозможно и часто возникает ситуация, когда решить требуемую задачу имеющимися средствами нельзя. Если проблема простая и единовременная, то решается она быстро в месте возникновения, через codebehind представления. Но если одна и та же функциональность нужна в многих местах, необходимо реализовать удобный механизм повторного использования решения.

Написать данную статью меня побудила статья «Автоматическое выделение ссылок в универсальных приложениях Windows». В статье найдено решение конкретной проблемы и предложено работающее решение. Однако для его использования необходимо в codebehind для каждого текстового блока вызывать код. Более того если данные предполагают изменение в процессе работы необходимо следить за их изменением. В процессе своей работы такие решения встречаю довольно часто, они отличаются реализацией, но их все отличает одно неизменное свойство, сложность поддержки и сопровождения кода.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments14

Звуковые эффекты в приложениях Windows Phone 8

Reading time8 min
Views6.3K
Несмотря на то, что подавляющему большинству приложений не требуется воспроизводить звуковые эффекты, иногда возникает ситуация, когда без звукового эффекта не обойтись. Тогда возникает закономерный вопрос, как воспроизвести звуковой эффект в приложении Windows Phone 8?

Обратившись к документации по Windows Phone Silverlight, можно найти следующие статьи Media for Windows Phone и Playing a sound effect. Исходя из содержания документов можно прийти к мнению, что есть только два способа воспроизведения эффектов в приложениях: использовать MediaElement или XNA. Рассмотрим каждый из этих способов более подробно.

Воспроизведение звуковых эффектов с помощью MediaElement


Самым простым и «родным» способом проиграть звуковой эффект, является использование элемента управления MediaElement. Данный элемент управления предоставляет широкие возможности для воспроизведения звукового и видео содержимого и может быть использован для наших целей.
Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments5

Использование Yandex MapKit совместно с элементами управления Pivot и Panorama

Reading time4 min
Views6.1K
Основная страница нашего приложения построена с использованием элемента управления Pivot, на одной из закладок которого необходимо было разместить карту с информацией о местоположении автомобиля. Пользователям нашего приложения было решено предоставить выбор между сервисами карт от компании Микрософт и компании Яндекс.

Интеграция встроенного сервиса карт не составило никакого труда, так как элемент управления для отображения карт является частью операционной системы, и его интеграция со всеми стандартными элементами управления отработана до мелочей.

Однако с интеграцией элемента управления для отображения карт входящего в Yandex.Map MapKit от компании Яндекс возникли неожиданные сложности. Попытки манипуляции картой в горизонтальной плоскости приводили к переключению текущей закладки элемента управления Pivot.
Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments0

MVVM Framework для Windows Phone своими руками. Часть 1

Reading time11 min
Views13K
Разработка приложений для платформ WPF, Silverlight, Windows Store и Windows Phone, почти всегда подразумевает использование паттерна MVVM. Это закономерно, так как базовой философией этих платформ, является разделение представления (так же я буду использовать термин интерфейс пользователя) и остальной логики программы. Этот подход позволяет получить следующие преимущества:

  1. Разделение пользовательского интерфейса и логики представления: что позволяет дизайнерам работать над пользовательским интерфейсом, а программистам над бизнес логикой приложения используя для взаимодействия абстрактный интерфейс модели представления
  2. Расширенные возможности автоматизированного тестирования: отделение пользовательского интерфейса от остальной логики, позволяет полностью протестировать логику представления без ограничений накладываемых автоматизацией тестирования через пользовательский интерфейс
  3. Множественные представления для одной модели представления: одна модель представления может использоваться многими реализациями интерфейса пользователя. Например, сокращенный и полный вариант представления данных, интерфейс зависящий от прав пользователя. Возможность использовать одну реализацию модели представления на различных платформах
  4. Расширенные возможности повторного использования компонентов: так как модели представления отделены от реализации представления, возможны любые варианты их использования, наследование от базовых моделей, композиция нескольких моделей и т.п.


Разрабатывая приложения под платформу Windows Phone, я столкнулся с тем, что большинство статей описывают базовую реализацию паттерна MVVM, которая обычно сводится к реализации в классе модели представления интерфейса INotifyPropertyChanged, создания простой реализации ICommand и простые сценарии связывания этих данных с представлением. К сожалению, остаются за рамками обсуждения такие важные вопросы как, реализация обобщенных классов с удобным интерфейсом, синхронизация потоков при асинхронном исполнении, навигация на уровне модели представления и многие другие.

Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments41

Безопасное использование HTTP заголовка IfModifiedSince в PCL библиотеках

Reading time2 min
Views2.9K
Неожиданно связь прервалась Мы разрабатываем приложение под несколько платформ, всю платформонезависимую часть создаем с помощью PCL, стараясь добиться максимального уровня переиспользования компонентов. Для коммуникаций с сервером используется класс HttpWebRequest который реализует всю необходимую от транспортного уровня функциональность.

Недавно протокол был оптимизирован, в нем появилась возможность сократить объем передаваемых данных указывая горизонт актуальности. Реализована данная оптимизация с помощью обработки HTTP заголовка IfModifiedSince, однако у объекта HttpWebRequest в PCL не доступного свойство IfModifiedSince. Это не казалось проблемой заголовок был добавлен напрямую в коллекцию заголовков запроса.

request.Headers[HttpRequestHeader.IfModifiedSince] = timeStamp.ToString();

Протестировав решение на WindowsPhone приложении я убедился в его работоспособности, но все юнит тесты транспортного уровня выдали ошибки.
Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments3

Новогодний подарок от Nokia

Reading time2 min
Views28K
Кучка подарковДва месяца назад прочитал новость на хабре, о том, что для россиян доступна программа поддержки разработчиков DVLUP. Стало интересно узнать больше об этой программе, так как в то время разработка для Windows Phone еще была моим хобби, а на маркете было опубликовано несколько приложений. В общем именно тогда мне как раз был нужен миллион...

Зарегистрировался в программе и осмотрелся, все оказалось просто, выполняешь задание, получаешь очки, которые можно тратить в магазине. Набор призов достаточно разнообразен, от зарядных устройств, до топовых устройств компании Nokia. Для меня особый интерес представляли телефоны и лицензии на программное обеспечение. Определившись с призами приступил к детальному изучению заданий, среди всего представленного разнообразия выделил задания, на качество приложений. Суть заданий сводилась к тому, что необходимо предоставить приложение с оценкой больше 4. А от количества голосов зависело количество балов которые можно получить.
Читать дальше →
Total votes 48: ↑37 and ↓11+26
Comments20

Простая локализация названия приложений Windows Phone

Reading time4 min
Views5.6K


Являясь разработчиком приложений для Windows Phone, я давно понял, что рынок мобильных приложений глобален и для успешного продвижения приложения, оно должно быть качественно локализовано для максимального количества доступных языков. Локализация приложений для Windows Phone подробно описана в документации по разработке приложений. Однако процесс локализации заголовков и заголовков плиток приложений отличается от локализации самого приложения и часто вызывает затруднения, так как требует подготовки отдельного файла ресурсов для каждого языка.

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

Поиск показал, что многие ищут пути удобного решения данной проблемы. Но удобного способа для себя я не нашел, это привело меня к решению написать утилиту которая позволит создавать и управлять файлами ресурсов. Для меня самым удобным способом стало, описание заголовков в XML файле и автоматическая генерация необходимых файлов на его основании.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments2

Information

Rating
1,177-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity

Specialization

Mobile Application Developer
Middle
Android development
Development of mobile applications
Kotlin
Android SDK