Behaviors扩展----根据Pivot的item自动切换AppBar
来源:互联网 发布:网站访问量统计js插件 编辑:程序博客网 时间:2024/06/08 06:20
Pivot是Windows Phone中的常用控件,我们经常需要根据PivotItem的切换使用不同的AppBar,在此我提供一个Behaviors 这个Behavior中保存一个AppBar的列表,并且会监听Pivot的Item切换事件,根据Item显示对应的AppBar,另外还支持 使用与正常的Behavior是一样的,注意第一个AppBar对应第一个PivotItem,第二个AppBar对应第二个PivotItem,以此类推。
来自动管理AppBar,省去手动切换的麻烦。
看代码:
[ContentProperty("AppBars")] public class PivotAppBarBehavior : Behavior<Pivot> { PhoneApplicationPage _page; public PhoneApplicationPage ParentPage { get { if (_page == null && this.AssociatedObject!=null) _page = this.AssociatedObject.GetParentPhonePage() as PhoneApplicationPage; return _page; } } public static readonly DependencyProperty AppBarsProperty = DependencyProperty.Register("AppBars", typeof(List<IApplicationBar>), typeof(PivotAppBarBehavior), null); public List<IApplicationBar> AppBars { get { var appBars = base.GetValue(AppBarsProperty) as List<IApplicationBar>; if (appBars == null) { appBars = new List<IApplicationBar>(); base.SetValue(PivotAppBarBehavior.AppBarsProperty, appBars); } return appBars; } set { base.SetValue(AppBarsProperty, value); } } void pivot_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (ParentPage == null) return; if (AssociatedObject != null && AppBars != null && AppBars.Count > AssociatedObject.SelectedIndex) { IApplicationBar appbar = AppBars[AssociatedObject.SelectedIndex]; if (appbar is AppBar) { AppBar bar = appbar as AppBar; if (bar != null) ParentPage.ApplicationBar = bar.ApplicationBar; } else { ParentPage.ApplicationBar = AppBars[AssociatedObject.SelectedIndex]; } } else { ParentPage.ApplicationBar = null; } } protected override void OnAttached() { base.OnAttached(); Pivot pivot = this.AssociatedObject as Pivot; if (pivot != null) pivot.SelectionChanged += pivot_SelectionChanged; } protected override void OnDetaching() { base.OnDetaching(); Pivot pivot = this.AssociatedObject as Pivot; if (pivot != null) pivot.SelectionChanged -= pivot_SelectionChanged; }
我自定义的一个AppBar,这个AppBar可以使用命令绑定,使用时会很方便,关于这个AppBar点击这里:http://www.devdiv.com/home.php?mod=space&uid=55433&do=blog&quickforward=1&id=50584。
如何使用:
<controls:Pivot> <i:Interaction.Behaviors> <local:PivotAppBarBehavior> <local:AppBar Width="0" Height="0" > <local:AppBarIconButton Text="添加" IconUri="/appbar.new.rest.png" Command="{Binding AddItemCommand,Source={StaticResource viewmodel}}" CommandParameter="Add"/> <local:AppBarIconButton Text="减少" IconUri="/appbar.cancel.rest.png" Command="{Binding DecreaseItemCommand,Source={StaticResource viewmodel}}"/> </local:AppBar> <local:AppBar Width="0" Height="0" > <local:AppBarIconButton Text="添加" IconUri="/appbar.new.rest.png" Command="{Binding AddItemCommand,Source={StaticResource viewmodel}}" CommandParameter="Add"/> <local:AppBar.Menus> <local:AppBarMenuItem Text="减少" Command="{Binding DecreaseItemCommand,Source={StaticResource viewmodel}}"/> </local:AppBar.Menus> </local:AppBar> <local:AppBar Width="0" Height="0" > <local:AppBarIconButton Text="减少" IconUri="/appbar.cancel.rest.png" Command="{Binding DecreaseItemCommand,Source={StaticResource viewmodel}}"/> <local:AppBar.Menus> <local:AppBarMenuItem Text="添加" Command="{Binding AddItemCommand,Source={StaticResource viewmodel}}" CommandParameter="PivotItem3Add"/> </local:AppBar.Menus> </local:AppBar> </local:PivotAppBarBehavior> </i:Interaction.Behaviors>
看效果:
示例:AppBarCommand.zip
- Behaviors扩展----根据Pivot的item自动切换AppBar
- windows phone:Behaviors扩展----根据Pivot的item自动切换AppBar
- Android 根据item大小实现自动排列的GridLayout
- windows 8 metro app 中 选中某个 item 弹出 appbar 的方法
- 根据时段自动切换网站的CSS风格
- 根据时段自动切换你的站点CSS风格
- loadrunner 自动切换参数设置--根据别人的经验操作
- AppBar的WTL实现
- AppBar的简单使用
- 根据所创建Item的title自动实现分配到不同的folder下
- WP7 Tip: 禁用Pivot控件的切换手势
- magento,货币自动切换---根据IP
- 使用Python根据网速自动切换网关
- XAML中AppBar的使用
- AppBar和Toolbar的联用
- android自定义gridview,根据item自动适应高度
- dephi 程序输入法根据用户的爱好自动切换的简便解决办法
- .net 多元语言 -- 根据当前客户的浏览器语言版本,自动切换
- HibernateTemplate
- Linux framebuffer from Wiki
- #Testin杯#+如何在你的应用中嵌入广告
- 用visualvm监控远程java进程内存回收
- WPF之Page介绍(以及Page之间的链接)
- Behaviors扩展----根据Pivot的item自动切换AppBar
- tomcat6+eclipse远程debug
- On-line learning for Visual Tracking
- visualvm监控tomcat
- 找出所有人认识的人
- word 2007 默认输入法
- C/C++ const详解
- iOS开发证书在多台机器上使用
- C++中static_cast、const_cast、reinterpret_cast的用法举例,附带举例说明强制类型转换时int和int&的区别