Расширенная Панель Приложений. Улучшение Панели Приложений В Wp7

Многие разработчики WP7 неприятно удивлены реализацией ApplicationBar. В шутку ходят грязные слухи, что этот компонент разрабатывался вовсе не в MS, а командой, не имеющей никакого отношения к silverilght, написавшей компонент по запрошенному интерфейсу.

Поскольку мне приходилось активно работать с ApplicationBar в нескольких проектах, я написал обертку AdvancedApplicationBar, которая позволяет существенно сократить объем кода.

Фактически, наиболее распространенные проблемы можно решить с помощью разметки в XAML. Итак, основные претензии к ApplicationBar, которые часто можно услышать: Для тех, кто распробовал вкусности MVVM, неприятным открытием стало отсутствие поддержки привязки данных (DataBinding), и соответственно отсутствие поддержки ICommand. Гораздо приятнее, например, установить свойство IsEnabled из ViewModel, чем писать фоновый код. Отсутствие свойства Visibility — иногда приходится скрывать некоторые элементы в зависимости от определенных условий.

ApplicationBar неудобно работать с Panorama и/или Pivot. Довольно часто вам нужно отображать разные элементы на каждой вкладке.

ApplicationBar частично выручает в ресурсах, которые заменяются по событию SelectionChanged, но при этом значительно усложняется код поддержки свойств IsEnabled и т.п.

Кроме того, если одна и та же кнопка должна отображаться всегда, вам придется дублировать ее в каждой реализации.

К сожалению, вы не можете использовать расширение для решения этих проблем, так как ApplicationBar не может быть расширен, его можно только унаследовать, давая некоторые возможности.

улучшения .

Но все же возможности не такие удобные, как при расширении.

Кроме того, хотя ApplicationBar реализует интерфейс IApplicationBar, который является свойством Page, его нельзя заменить альтернативной реализацией, поскольку принимается только реализация ApplicationBar. во время разработки Расширенная панель приложений Я пытался предоставить решения распространенных проблем, используя только разметку в XAML, без необходимости писать фоновый код. Как подключиться Чтобы использовать его, вам нужно добавить ссылку на sh.dll и добавить на страницу пробел xmlns:Sh="clr-namespace:Sh;assembly=Sh" Поскольку AdvancedApplicationBar работает как оболочка над основным ApplicationBar, его необходимо разместить внутри главной панели (обычно Grid).

  
   

<phone:PhoneApplicationPage .

> <Grid x:Name="LayoutRoot" Background="Transparent"> .

<Sh:AdvancedApplicationBar> .

</Sh:AdvancedApplicationBar> </Grid> </phone:PhoneApplicationPage>

Основные особенности: Поддержка привязки данных, поддержка ICommand Поддержка панорамы/поворота: Поскольку почти в каждом приложении необходимо было реализовать возможность указывать разные кнопки в ApplicationBar для каждой вкладки Panorama, а иногда и Pivot, я решил исключить необходимость добавления AppButtons и MenuItems только внутри ApplicationBar. Например, если нам нужно, чтобы на странице всегда была кнопка «Добавить» в первую очередь и кнопка настроек в конце, а между ними должны быть элементы, специфичные для конкретных вкладок панорамы, мы можем разместить кнопку «Добавить» ПЕРЕД панорамой, в в каждом PanoramaItem мы можем разместить нужные нам AdvancedApplicationBarIconButton и AdvancedApplicationBarMenuItem: и в конце мы можем разместить кнопку настроек.

Схематически:

<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Margin="12,0,12,0"> <Sh:AdvancedApplicationBarIconButton .

/> <controls:Panorama> <controls:PanoramaItem> <Grid> .

<Sh:AdvancedApplicationBarIconButton .

/> <Sh:AdvancedApplicationBarIconButton .

/> <Sh:AdvancedApplicationBarMenuItem .

/> </Grid> </controls:PanoramaItem> <controls:PanoramaItem> <Grid> <Sh:AdvancedApplicationBarIconButton .

/> </Grid> </controls:PanoramaItem> </controls:Panorama> <Sh:AdvancedApplicationBar> <Sh:AdvancedApplicationBarIconButton .

/> </Sh:AdvancedApplicationBar> </Grid>

Небольшая иллюстрация возможности работы с AdvancedApplicationBar без дополнительного кода, используя только инструменты XAML (и взаимодействие с AppBar через DataBinding): Вы можете скачать библиотеку и исходный код с демонстрацией.

Здесь через сайт ахмед.ру Теги: #WP7 #windows phone #ApplicationBar #AdvancedApplicationBar #разработка для Windows Phone

Вместе с данным постом часто просматривают: