Главная » Silverlight » Пользовательские контейнеры

0

Платформа Silverlight предоставляет мощную коллекцию контейнеров, однако многих все же не хватает. Разработчики Silverlight не добавили многие контейнеры, потому что стремились минимизировать размеры надстройки Silverlight и уменьшить время загрузки.

Выбор оптимального типа контейнера

Контейнеры Grid и StackPanel лучше всего подходят для деловых приложений, например для отображения до­кументов или форм ввода данных. Эти контейнеры автоматически учитывают изменяемые размеры окна и поведение динамического содержимого (например, блоки текста могут растягиваться или сокращаться, в зависимости от вводи­мой информации). Кроме того, контейнеры Grid и StackPanel облегчают модификацию и локализацию приложе­ния, потому что при их использовании соседние элементы при изменении размеров автоматически перемещаются, освобождая место друг для друга. Кроме того, эти контейнеры работают так же, как обычные элементы HTML. Контейнер Canvas существенно иной. Все его дочерние элементы размещаются на основе фиксированных коор­динат, поэтому нужно потратить дополнительное время на их позиционирование (и даже еще больше времени, если понадобится изменить размещение в связи с новым форматированием или появлением новых элементов). Однако для некоторых типов графически мощных приложений (таких, как игры) контейнер Canvas незаменим. В этих при­ложениях нужно тонко управлять элементами, потому что текст и графика часто перекрываются и возникает необхо­димость программно изменять координаты. Контейнер Canvas предпочтительнее, когда главное требование к при­ложению — не гибкость, а поддержка специальных визуальных эффектов.

Разработчики приложений Silverlight могут сами создавать специальные контей­неры, аналогичные применяемым в WPF. Для этого нужно создать пользовательский класс, производный от Panel, и добавить в него соответствующий код размещения эле­ментов. Далее рассматривается, как создать пользовательский контейнер, переносящий элементы в следующую строку. Если вы достаточно амбициозны, то можете комбини­ровать логику панели с другими средствами Silverlight. Например, можно создать па­нель, обрабатывающую события мыши для поддержки перетаскивания элементов (см. пример с перетаскиванием окружностей в главе 4), или панель, выводящую дочерние элементы с эффектами анимации.

В следующих разделах вы узнаете, как работает процедура размещения, и на этой основе научитесь создавать собственные контейнеры. Будет рассмотрен пользователь­ский контейнер UniformGrid — упрощенная версия элемента Grid, размещающая эле­менты в таблице с одинаковыми ячейками.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии