воскресенье, октября 31, 2021

Импортозамещение - 3.

 Продолжаем изучение возможностей обходиться без "фирменных" элементов в UWP-программках. Такие элементы иногда вполне неплохие, но вот "фирмы" бывают разными - к примеру, могут внезапно присоединиться к санкциям против государства, в котором тебя угораздило родиться и жить. Много чего могут…

На нынешнем этапе в деле замены на open-source пришла очередь контрола RadDataGrid фирмы Telerik. Ничего плохого не могу сказать про саму фирму, но политика есть политика - рано или поздно она за тобой придёт.

В качестве кандидата на замену выступает DataGrid из пакета Windows Community Toolkit. Несомненным преимуществом контрола является его бесплатность и открытsq код. Остальные его недостатки можно преодолеть путём высказывания некоторых магических слов в адрес разработчиков, сопровождаемое плотным сидением за монитором и клавиатурой. В процессе выяснилось, что отсутствие у контрола врождённой встроенной сортировки по колонкам исправляется буквально десятком строк кода. Отсутствие у колонок типа (они все там DataGridTextColumn) и параметров форматирования (типа CellContentFormat или FormatString) вполне компенсируется конвертером FormatStringConverter из того же Community Toolkit. Также на достаточно приличном уровне находится способность контрола автоматически выставлять ширину колонок. Конечно, среди отображаемых данных обязательно найдётся строка большой длины и вся табличка станет шире монитора, но программа при этом не валится.

На совершенно аховом уровне  - внешний вид контрола. Для раскраски совершенно не воспринимаются никакие "тематические" цвета наподобие {ThemeResource SystemChromeHighColor}, только константы типа White, Gray и т.п. В результате раскрасить строки в альтернативные цвета не получается, только "вырвиглаз" или смена цвета шрифта на серый (всякий другой выглядит плохо при смене темы dark/light). Про раскраску границ ячеек и всего контрола - только магические слова.

Но с получившимися табличками жить можно: