Получилось! Заработал компонент CustomWindow!
Вот, вид моей программы на сегодня. Вид явно преображается, я стараюсь 😄. А вот сегодня, чего не ожидал, получил приятный сюрприз. Ранее я писал о том, что мне не удалось создать пользовательский контрол авалонии, расширяющий возможности XAML-окон приложения. Так вот, сегодня я смог это наконец-то сделать! Работают, применяются и стили, и шаблоны, и даже получилось вывести через привязку шаблонов заголовок от окна в контрол. То есть всё теперь работает.
А в чём же была причина? А причина, как обычно, банальна. Всегда проблемы возникают из-за того, что что-то где-то перепутаешь. И вот, вместо того, чтобы в привязанном к контролу стиле указать селектор на текущий контрол «CustomWindow», я задал просто «Window», то есть не на сам контрол, а на его родительский элемент. И заработало, фиг побери!
Зачем я делал компонент «DesktopPage», непонятно. Ну да ладно, пускай будет на всякий случай. Теперь, то есть завтра буду делать тот же заголовок для контрола-расширения окна, что и для этого пользовательского контрола. Но зачем? Разве плохо получился «DesktopPage»? Нет, нормально. Но мне хочется лучше. Я же перфекционист в своём творческом ремесле. Во-первых, мне хочется дополнить недостающий функционал базовых окон (о котором разработчики авалонии забыли), во-вторых я не хочу использовать встроенные в базовое окно контролы, имитурующие само это окно. Так что этот вариант выглядит красивее.
Что ещё е сегодня сделал? Ну, собственно, не так уж много. Всё опять от того, что приходиться ломать день на два ломтика для программы и для блога. Вот, сегодня я создал C# классы для команд заголовка окна (свернуть, развернуть, восстановить, закрыть). Хорошая практика - это повторное использование твоего кода. Лучше функции, которые могут применяться в нескольких местах программы локализовывать в отдельные файлы, которые можно будет потом использовать где угодно. Так намного удобнее. Да, немного подретушировал стили заголовка окна. Сделал их, на мой взгляд, более гармоничными. Теперь завтра перенесу их к стилям уже контрола-расширения окна. И не забуду, естественно, добавить к окну свойство «CanMinimize», о котором разработчики данной библиотеки UI почему то забыли.
И ещё сегодня я начал языковую локализацию программы. Добавил в сборку файл языковых ресурсов, уже сделал вывод всплывающих подсказок на кнопках закрытия своих контролов. Завтра, думаю, долокализую те надписи, которые пока присутствуют на окне моей программы. Но хотелось бы мне реализовать динамическую смену локализации. чтобы можно было не закрывая окно программы автоматом изменить языковую локализацию. Для этого предстоит написать функцию, которая обходит циклом мои контролы и свойства локализации к ним и меняет языковую раскладку на другую выбранную. Короче, я делал это уже раз сто, но сейчас предстоит вспомнить это. Многое со временем забывается без практики. Вот такие дела на текущий момент.

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