.NET → WPF layout: Measure и Arrange

Общее представление о том, что такое WPF Layout System, можно получить из msdn (1, 2). Там написано, что элементы управления образуют Visual-дерево, что каждый из элементов управления имеет свой определенный прямоугольник, в рамках которого он отрисовывается, что определение этих прямоугольников возлагается на Layout System и выполняется в 2 этапа (measure и arrange) и что WPF — это retained mode graphic system, в отличие от обычных Immediate и в чем преимущества такого подхода.
Однако при чтении msdn возникает ряд вопросов, на которые в документации ответов нет, и можно только догадываться о том, что происходит. Например — что произойдет, если какой-либо дочерний контрол в measure-стадии запросит для себя размер, превышающий переданный ему availableSize? Или — как при необходимости реализовать методы MeasureOverride и ArrangeOverride правильно, чтобы написанный код не противоречил принятым соглашениям о том, как должны выполняться этапы Measure и Arrange ? Влияет ли результат, полученный на этапе Measure, на этап Arrange и отрисовку, или же на отрисовку влияет только вызов Arrange, а Measure — чисто информационный этап?
Попробуем разобраться более детально в том, что происходит за кулисами.
Персональные блоги → Layout страницы за 5 секунд

www.layzilla.com/
Проект родился просто из личных нужд. Если это удобно нам, надеюсь будет полезно кому-то еще. Все просто и без наворотов. Но не смотря на это, следуем стандартам и качеству кода.
Можно создавать основу страницы проекта любой сложности.
В будущем сделаем поддержку HTML5.
Мануал для любителей почитать.
JAVA → Layout без layout'ов
Библиотека Swing появилась примерно 15 лет назад и все эти 15 лет КАЖДЫЙ кто начинает программировать на Java задаёт один и тот же вопрос:
— Почему я не могу просто добавить кнопки с полями на форму без изучения всех этих LayoutManager'ов?
В стандарной JRE содержится больше десятка классов для компоновки элементов (FlowLayout, GroupLayout и т.п.), постоянно появляются новые компоновщики типа MigLayout но ситуация не улучшается.
Рассмотрим варианты создания форм типа этой:

— Почему я не могу просто добавить кнопки с полями на форму без изучения всех этих LayoutManager'ов?
В стандарной JRE содержится больше десятка классов для компоновки элементов (FlowLayout, GroupLayout и т.п.), постоянно появляются новые компоновщики типа MigLayout но ситуация не улучшается.
Рассмотрим варианты создания форм типа этой:

История ИТ → История Orfo Switcher
Доброго времени суток, дорогие хаброжители!
Как-то давным давно, в августе 2006-ого года, будучи студентом, я загорелся идеей написать программу, которая бы перенесла клавиши перемещения курсора (стрелки) на клавиатуре из привычного места прямо на алфавитную клавиатуру. Идея фикс была в том, чтобы навигация по редактору, в котором я программировал происходила без отрыва рук от привычного положения «ФЫВА-ОЛДЖ». Достаточно было зажать Caps-Lock и клавиши I,J,K,L превращались в клавиши управление курсором. Это было здорово! Пришлось разобраться с хуками Windows, с особенностью перехвата и подделкой сообщений от клавиатуры, и, несмотря на то, что идея с упрощенной навигацией не прижилась даже у меня самого (сложно было заставить себя использовать новые клавиши), я был рад проделанной работе, потому что у меня уже было все необходимое чтобы создать свой переключатель клавиатуры, который бы заменил бестолковый (как мне тогда казалось) Punto Switcher.
Как-то давным давно, в августе 2006-ого года, будучи студентом, я загорелся идеей написать программу, которая бы перенесла клавиши перемещения курсора (стрелки) на клавиатуре из привычного места прямо на алфавитную клавиатуру. Идея фикс была в том, чтобы навигация по редактору, в котором я программировал происходила без отрыва рук от привычного положения «ФЫВА-ОЛДЖ». Достаточно было зажать Caps-Lock и клавиши I,J,K,L превращались в клавиши управление курсором. Это было здорово! Пришлось разобраться с хуками Windows, с особенностью перехвата и подделкой сообщений от клавиатуры, и, несмотря на то, что идея с упрощенной навигацией не прижилась даже у меня самого (сложно было заставить себя использовать новые клавиши), я был рад проделанной работе, потому что у меня уже было все необходимое чтобы создать свой переключатель клавиатуры, который бы заменил бестолковый (как мне тогда казалось) Punto Switcher.
ASP.NET MVC → Razor: вывод секций в мастер-страницах мастер-страниц
Всем доброго времени суток. С недавних пор занимаюсь активной разработкой на ASP.NET MVC 3 & Razor «непростого» веб-приложения и вот сегодня наткнулся на проблему, которая опытными разработчиками, может быть, уже исследована и решена, но вот новичкам информация ниже, думаю и надеюсь, окажется полезной.
Пусть в приложении есть пара представлений: View.cshtml и ViewWithSide.cshtml, а ещё есть две мастер-страницы: Layout.cshtml и LayoutWithSide.cshtml, причём первая является мастер-страницей для второй. Как можно догадаться по именам файлов, XxxWithSide.cshtml добавляет в странице боковую панель, формат вывода которой определён в мастер странице, а внутренности — в представлении. В главной мастер-странице Layout помимо основной разметки определён вывод секции «navigation», которая задаётся в представлениях.
И вот когда в коде ViewWithSide определена секция «navigation», а в LayoutWithSide нет, потому что эта секция должна обрабатываться «следующей» мастер-страницей (Layout), то при попытке открыть ViewWithSide в приложении будет выдана ошибка: The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/LayoutWithSide.cshtml": «navigation» (Секция «navigation» определена, но нигде не выведена в мастер-странице).
Идея решения этой проблемы довольно проста: нужно передать вывод этой секции «следующей» мастер-странице, а там пусть сами разбираются.
Описание проблемы
Пусть в приложении есть пара представлений: View.cshtml и ViewWithSide.cshtml, а ещё есть две мастер-страницы: Layout.cshtml и LayoutWithSide.cshtml, причём первая является мастер-страницей для второй. Как можно догадаться по именам файлов, XxxWithSide.cshtml добавляет в странице боковую панель, формат вывода которой определён в мастер странице, а внутренности — в представлении. В главной мастер-странице Layout помимо основной разметки определён вывод секции «navigation», которая задаётся в представлениях.
И вот когда в коде ViewWithSide определена секция «navigation», а в LayoutWithSide нет, потому что эта секция должна обрабатываться «следующей» мастер-страницей (Layout), то при попытке открыть ViewWithSide в приложении будет выдана ошибка: The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/LayoutWithSide.cshtml": «navigation» (Секция «navigation» определена, но нигде не выведена в мастер-странице).
Идея решения этой проблемы довольно проста: нужно передать вывод этой секции «следующей» мастер-странице, а там пусть сами разбираются.
Подкасты → «Сделайте мне красиво!» Выпуск №24
Вашему вниманию очередной выпуск подкаста о веб-разработке «Сделайте мне красиво!»
Сегодня у нас в гостях Вячеслав Олиянчук aka miripiruni
Наши ссылки: RSS и лента на rpod.ru
Сегодня у нас в гостях Вячеслав Олиянчук aka miripiruni
Show notes:
- Отдельный проект гостя: расческа для CSS
- Будущее CSS3 для создания раскладок
- Подробное обсуждение черновиков модулей CSS3 (раз, два, три)
- Авторедактор CSS
- Загадка про семантику в HTML5
- Скрещиваем ежа с ужом: Dropbox + Chrome = IDE
- Универсальные вредные советы программистам/кодерам
- Тестовое задание на упомянутую вакансию
Наши ссылки: RSS и лента на rpod.ru
прослушан 825 раз
Zend Framework → ZendFramework QuickStart — Создание Макета (Layout)
Итак, продолжим создание простейшего приложения на Zend Framework.
Повторюсь что данная статья ориентированна на версию 1.10,
а точнее 1.10.5. В предыдущей статье, были рассмотрены вопросы создания проекта, однако простейшее Zend Framework приложение на самом деле не совсем закончено…
Повторюсь что данная статья ориентированна на версию 1.10,
а точнее 1.10.5. В предыдущей статье, были рассмотрены вопросы создания проекта, однако простейшее Zend Framework приложение на самом деле не совсем закончено…
Байнет → Ностальгическая белорусская раскладка для Mac OS X

Являясь разработчиком под iPhone, волей-неволей пришлось пересесть за Макинтош и сделать его своей основной системой. И вот, наконец, решил придать и «сцягу» белорусской раскладки более эстетичный — на мой взгляд — облик.
Типографика → Чиним раскладку Ильи Бирмана для MacOS
Когда я скачал около полугода назад типографскую раскладку Ильи Бирмана — я столкнулся со следующей проблемой: у меня не было «ё» в русской раскладке и, о ужас, «~» и «`» в английской.
В те времена я был ещё под сильным впечатлением от Убунту и первым делом полез править keylayout файлы. Не знаю как точно, но через некоторое время я получил методом проб и ошибок рабочий вариант.
Вчера мне потребовалось повторить все эти процедуры, но вместо ковыряния в конфигах я нашёл утилиту, которая позволяет в оконном интерфейсе создавать и редактировать раскладки (многие, конечно о ней уже знают):
Скачать утилиту можно с её официального сайта: scripts.sil.org/ukelele
Подправленную мною версию можно скачать (11 Кб).
Установка аналогична оригинальной версии:
Скачайте архив и распакуйте его содержимое в каталог /Library/Keyboard Layouts/
После этого включите раскладки в System Preferences → International → Input Menu
После этого советую перезагрузиться.
Если возникнут проблемы — оригинальную раскладку Бирмана, наверное, лучше удалить.
В те времена я был ещё под сильным впечатлением от Убунту и первым делом полез править keylayout файлы. Не знаю как точно, но через некоторое время я получил методом проб и ошибок рабочий вариант.
Вчера мне потребовалось повторить все эти процедуры, но вместо ковыряния в конфигах я нашёл утилиту, которая позволяет в оконном интерфейсе создавать и редактировать раскладки (многие, конечно о ней уже знают):
Скачать утилиту можно с её официального сайта: scripts.sil.org/ukelele
Исправленная версия раскладки
Подправленную мною версию можно скачать (11 Кб).
Установка аналогична оригинальной версии:
Скачайте архив и распакуйте его содержимое в каталог /Library/Keyboard Layouts/
После этого включите раскладки в System Preferences → International → Input Menu
- Russian — Ilya Birman Typography PS/2
- English — Ilya Birman Typography PS/2
После этого советую перезагрузиться.
Замечание
Если возникнут проблемы — оригинальную раскладку Бирмана, наверное, лучше удалить.