Закончил работу над вкладочным документом, результатом не очень доволен
Вот наконец-то этап работы над моей программой, которому я посвятил две недели, подошел к концу и этот самый сложный в моей программе контрол наконец-то худо-бедно готов. Надо бы радоваться, вот только большой радости тут нет. Потому что худо-бедно и с натягом. Что это значит? Сейчас поясню. А значит это то, что не всегда всё удаётся сделать идеально или же даже просто хорошо. Есть вещи очень сложные для реализации, которые требуют огромного количества времени и незаурядных мозгов, да и адского терпения. Вот, сделал, как я его назвал, вкладочный документ.
Этот контрол должен служить для открытия и конфигурирования вкладок с размещенным в них контентом. Эти вкладки можно перетаскивать, менять местами, закрывать, перетаскивать в другие вкладки. Пропорции и размеры контента вкладок также можно менять с помощью растягивания. Этот элемент интерфейса требует четкой и просчитанной работы с деревом элементов XAML и слаженного механизма сохранения и восстановления сохраненного состояния. В общем, непростой элемент. И требует он очень продуманного подхода и очень тчательной отладки при множестве вариантов компоновок этих вкладок. Так вот, реализовать так, чтобы всё это работало идеально, у меня не получилось. Механизм работает, сохраняется и восстанавливается, но не при любых компоновках корректно. Перетаскивание вкладок с их последующим закрытием вообще в половине (или большей) случаев работает просто по-уродски. Сейчас я не могу ничего придумать и исправить это так, чтобы всё работало корректно во всех случаях. По крайней мере малой кровью тут не обойтись. А это значит, что для того, чтобы отладить это до приемлемого уровня, мне потребуется корпеть над этим ещё не одну неделю. А этого сейчас я позволить себе не могу. Мне надо двигаться дальше в разработке программы.
Что ж, можно пока обойтись и тем, что получилось на данный момент. Да, не идеально, но хоть что-то работает. Если было бы готовое решение для авалонии, похожее на то, что реализовал я, то, конечно же, на первое время, я бы этим воспользовался. Но, как я уже ранее писал, нет ничего подходящего. Среди тех двух скудных вариантов дополнений для авалонии Dock и UniDock - это полная фигня, Один контрол я вообще не могу поставить на свой проект, потому что он тупо не ставиться, будучи не способным найти и подгрузить требуемые файлы nuget-пакета, другой не подошел в плане своего устройства, не позволяя мне реализовать то, что я задумал. Вот в итоге мне и пришлось пилить своё решение. Но, к сожалению, не идеальное. Да и даже просто хорошим я его назвать не могу. Работает с косяками в половине случаев при тестировании. Вкладки не всегда перетаскиваются в нужную позицию, не всегда восстанавливаются в исходное положение. Не всегда корректно сохраняется и восстанавливается состояние панелей вкладок и примененные при ресайзинге размеры этих панелей. Но в каких-то (простых) вариантах это работает корректно. Но только в самых простых вариантах расстановки вкладок. Когда, например, одна вкладка разбита на две области. Три и более областей на вкладке уже не дают корректного сохранения и восстановления размеров панелей.
Короче, тут нужно потратить ещё не одну неделю для того, чтобы довести это до безбагового состояния и конкретно поломать мозг над организацией всего механизма компоновки и сохранения/восстановления состояния вкладок. Ну, короче, если не выпендриваться с компоновкой и расстановкой вкладок, то всё работает вполне корректно. Ну или почти (
Наверное, займусь этой доводкой потом, в будущем. Будет что в дальнейшем улучшать в своей программе. Рим не за один день строился, и свою программу улучшать не один день, месяц или даже год я буду. Оставлю это на будущее. Вот честно, будь подходящий готовый вариант, то я бы его уже давно использовал и не тратил бы сейчас лишние недели на реализацию своих решений.
Может быть, в будущем я сделаю свою, продвинутую библиотеку контролов для авалонии. Ну при наличии достаточного количества времени и энтузиазма. Хотя эту идею можно было бы использовать и на коммерческой основе, но, при условии, что на тот случай я уж хорошо и качественно всё сделаю. Но пока что качество вкладочного документа оставляет желать лучшего. Надо просто принять, что не всегда всё получается как того задумал.
Ну вот, завтра, наконец, двинусь дальше в реализации всей программы. Начну я работу над диалоговыми окнами. 10 штук различных диалоговых окон. И опять контролы. Так что всё ещё буду работать над элементами интерфейса. С завтрашнего утра. Ну а пока на этом всё, и продолжение следует...

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.