Сегодня дела наконец-то пошли чуточку побыстрее. Справился я с тем, чтобы реализовать навигацию по пунктам выпадающего списка с помощью клавиатуры. А я вчера в этом усомнился, мол, как я получу доступ из ViewModel к этим элементам. А надо было просто поменять тип данных списка на TextBlock, и далее привязать к этим элементам обработчики событий. Короче, утро вечера мудренее.
Да, вот так важно сделать перерыв и перегруппировать силы. На следующий день- снова в бой. Ну а сегодня я успешно закончил контрол SearchBox и реализовал-таки контрол «EditComboBox». То есть доделал работу за разработчиков авалонии. Но об авалонии нужно еще сказать пару неприятных слов, но это чуть позже.
Вот сегодня пришлось немного покодить на C#. Нужно было реализовать навигацию и автоввод в текстовое поле контрола. Результатом своим я доволен. Вот код обработчика события ввода символов с клавиатуры:
Вот это то самое свойство - Suggestions. Туда складываются элементы, содержащие предложенные строковые значения для автодополнения. Работает всё четко, как надо.
Далее, я реализовал стили для контрола ScrollBar. Там, к сожалению, у меня так и не получилось всё сделать идеально. Как ни крути, как ни старайся, но всё же найдется то, что окажется тебе не под силу. И главное по непонятным причинам. Вот причина того, что я не смог добиться того, чтобы при нажатиях на кнопки полосы прокрутки на них устанавливался заданный цвет, мне совершенно не ясна. Сделал всё правильно, но почему-то контролы игнорируют установку фонового цвета. Либо цвет по-умолчанию, либо без смены цвета фона. Я выбрал второй вариант. Вот такие пироги. Жаль, но надо признать, что не всё в жизни получается. К сожалению.
Что ещё я сегодня успел сделать? Да: стилизовать контролы TreeView и ListBox. Ну а так, по сути, и всё. Завтра продолжу работу над стилями для элементов интерфейса.
Вот теперь можно вернуться про сказ о том, что меня расстроило или насторожило в авалонии. Я выявил пару неприятных моментов. Вернее один момент неприятный, другой ещё неприятнее. Ну, начнем с первого. Первый момент, точнее, очередной разочаровывающий сюрприз мне подкинула авалония при работе над контролом ListBox. Выяснилось, что разработчики (не понимаю как) допустили серьёзный баг: при установке опции (опция была установлена по умолчанию) VirtualizingMode при прокручивании элементов в списке контрола программа ломалась и вырубалась. Возникла некая ошибка с невозможностью некого размещения в визуальном дереве элементов. При выключении данной опции ошибка пропадала (слава богу), иначе бы тогда я не знаю, что пришлось бы делать. Возможно, даже отказываться от авалонии. Я не могу понять, как разработчики авалонии это могли упустить из виду? Ведь когда разрабатываешь какую-либо вещь, ты проверяешь её работоспособность. А тут на тебе, контрол не работает. Для меня это загадка: как же так? Что за долбоумизм? У меня есть гипотеза на этот счет. Только гипотеза. Возможно, разработчики авалонии работали на другой операционке и упистили это из виду. Не знаю, ХЗ, товарищ майор, спросите у полковника.
Но есть основания полагать, что потом от авалонии таки придется отказываться. Это связано со вторым неприятным моментом. Я уже, кажется, об этом писал. Я писал о том, что невозможно скомпилировать проект в финальный дистрибутив в одном файле на последней версии авалонии (11-preview-2). Вернее, скомпилировать-то можно, но при попытке запустить программу она через пару секунд вырубается. Окно запускается, виснет, курсор крутится в ожидании, и - бац! Окно закрывается. Это плохо, очень. Это второй серьёзный баг. И нет гарантий, что в ближайшее время или даже вообще этот баг будет замечен и исправлен. Если нет, то тогда очень плохо. Придется отказываться от авалонии. И искать ей альтернативу. Альтернативой может стать MAUI. Но я пока даже еще не запускал проект на MAUI, только создавал проект. Чтобы его запустить, нужна установка всех пакетов разработки для Android и Java - куча всего на солидный вес в гигабайтах. Нужно опробовать VisualStudio. Только не на системный диск, там места не так много. Но на обычном диске, там выполняться всё будет медленнее. Да и к тому же в Rider сейчас нед визуального просмотра интерфейса для MAUI. Когда появиться - ХЗ, может год пройти. Или даже больше.
Вот такие дела. Не знаю, как дальше пойдет. Ну пока буду разрабатывать на установленной версии авалонии. а там надо надеятся на лучшее. Надеется на то, что разработчики авалонии заметят эти баги и исправят их. Не через пять лет.
