суббота, июля 26, 2014

Игрушечка-6 или Списки значений

В программку добавил поддержку работы с базой данных. SQLite, конечно, других-то для “универсальных программ” и нет (что, конечно, весьма удивительно – всегда же был SQL Server compact edition). Цель, собственно, была простая – при отсутствии связи с сервисом Last.fm сохранить на время информацию о треке, чтоб потом её отправить повторно. Так, собственно, известные мне клиенты сервисов и делают. Рефлексы не позволили делать ненормализованную таблицу треков, в результате появились таблицы-справочники названий треков и альбомов, а также имён исполнителей. Ну, и чтобы добро не пропадало, сделал пополнение этих справочников при каждой отправке данных на сервис.
Хорошо, но мало: справочники растут, а пользы от  этого никакой. Первая мысль – сделать на их основе автодополнение для ввода в форме программы. Ура! Одна малость – подходящих под эту задачу контролов как-то не наблюдается ни среди стандартных, ни среди розданных на халяву фирмой Terlerik. Пришлось сооружать такой контрол самостоятельно. Контрол получил гордое имя “TextBoxWithList”:
image
После ввода с клавиатуры нескольких символов список заполняется подходящими значениями из справочника и выводится на дисплей:
Windows 8.1. WinPhone 8.1
more-artists more-albums
В основной форме пришлось помещать элементы в Canvas, без чего получалась мешанина:
image
Собственно, всего этого достаточно, если бы не одна малость – на телефонах работает как задумано только на 6” устройствах. На меньших экранах с третьим полем формы случается неувязка: выпадающий список практически полностью перекрывается находящейся в этот момент на экране клавиатурой. Для других полей список перекрывается частично и это не мешает им воспользоваться:
more-tracks
Сразу же возникает мысль использовать suggestions клавиатуры, однако обращение к собратьям эту мысль на время похоронило. Не придумал ничего лучшего, как при появлении списка сдвигать все элементы вверх, для чего пришлось прикрутить к контролу событие VisibilityListChanged, в обработчике которого и двигаются элементы формы:
more-artists
Вариант с рисованием списка выше поля ввода мне не нравится – и сам контрол надо переделывать, и основная форма ещё больше станет станет различаться в вариантах Windows/WinPhone, от чего Студия свихнётся окончательно...

Комментариев нет: