Windows Phone学习系列(一):添加Application Bar及多语言支持
2012-07-19 15:27
246 查看
一、创建Application Bar
Application Bar和WinForm界面中菜单栏、状态栏等界面组成部分一样,是移动运用界面的一个组成部分,只是默认情况下是空的不可见的,开发人员可以根据需要创建Application Bar的实例并添加功能按钮。
为运用添加Application Bar有两种方式,Xmal方式和后台代码的方式。
Xmal方式很简单,创建一个Windows Phone项目后,打开MainPage.xaml文件,能够发现默认就有<phone:PhoneApplicationPage.ApplicationBar>这一段Xaml,只是被注释掉了,我们只需要去掉注释即可。
如果通过代码的方式来添加方法如下,查看MainPage的基类PhoneApplicationPage,
View Code
按钮和目录的Text属性如果写成如下形式编译将无法通过:
看来只能在代码中通过属性来本地化了,我们拿第一个按钮来测试一下我们的想法,按常规思维,我们给按钮加上x:Name属性,如下:
在MainPage()函数中添加如下代码:
编译没有问题,运行后发现抛出NullReferenceException异常,为什么?Google一下,能看的资源有限(就Google能搜点有用的东西,关键时候总被和谐,上火!),大概意思就是说ApplicationBar不是派生自FrameworkElement,因而不是页面visual tree的一部分,代码中无法通过x:Name来引用。真不知道是不是Bug?反正是不能这样搞那只能换个思路了,居然我们明明知道ApplicationBar是有两个按钮的,那么我们可以尝试一下如下方式:
运行代码,发现果然可以!
第一小节中我们提到添加ApplicatonBar有两种方式,刚才本地化是用的只是第一种方式,如果用第二种方式也就是代码的方式添加ApplicatonBar就不存在上面的问题了,把MainPage.xaml中ApplicationBar部分的代码注释掉,在MainPage()函数中添加如下代码:
运行后发现满足我们的预期!
到此,本文的内容就结束了,内容很简单,但是如果实际动手并动脑了你会发现文中提到的很多意外,而偏偏是这些意外加深了我们的理解,希望对大家有所帮助!
示例代码下载
Application Bar和WinForm界面中菜单栏、状态栏等界面组成部分一样,是移动运用界面的一个组成部分,只是默认情况下是空的不可见的,开发人员可以根据需要创建Application Bar的实例并添加功能按钮。
为运用添加Application Bar有两种方式,Xmal方式和后台代码的方式。
Xmal方式很简单,创建一个Windows Phone项目后,打开MainPage.xaml文件,能够发现默认就有<phone:PhoneApplicationPage.ApplicationBar>这一段Xaml,只是被注释掉了,我们只需要去掉注释即可。
如果通过代码的方式来添加方法如下,查看MainPage的基类PhoneApplicationPage,
View Code
<phone:PhoneApplicationPage.ApplicationBar> <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True"> <shell:ApplicationBarIconButton IconUri="/Images/appbar.feature.email.rest.png" Text="btn1"/> <shell:ApplicationBarIconButton IconUri="/Images/appbar.refresh.rest.png" Text="btn2"/> <shell:ApplicationBar.MenuItems> <shell:ApplicationBarMenuItem Text="mi1"/> <shell:ApplicationBarMenuItem Text="mi2"/> </shell:ApplicationBar.MenuItems> </shell:ApplicationBar> </phone:PhoneApplicationPage.ApplicationBar>
按钮和目录的Text属性如果写成如下形式编译将无法通过:
Text=Localizedresources.ContentText, Source={StaticResource LocalizedStrings}}"
看来只能在代码中通过属性来本地化了,我们拿第一个按钮来测试一下我们的想法,按常规思维,我们给按钮加上x:Name属性,如下:
<shell:ApplicationBarIconButton Text="btn1" IconUri="/Images/appbar.feature.email.rest.png" Text="btn1"/>
在MainPage()函数中添加如下代码:
btn1.Text = AppResource.ButtonText;
编译没有问题,运行后发现抛出NullReferenceException异常,为什么?Google一下,能看的资源有限(就Google能搜点有用的东西,关键时候总被和谐,上火!),大概意思就是说ApplicationBar不是派生自FrameworkElement,因而不是页面visual tree的一部分,代码中无法通过x:Name来引用。真不知道是不是Bug?反正是不能这样搞那只能换个思路了,居然我们明明知道ApplicationBar是有两个按钮的,那么我们可以尝试一下如下方式:
((ApplicationBarIconButton)ApplicationBar.Buttons[0]).Text = AppResource.ButtonText;
运行代码,发现果然可以!
第一小节中我们提到添加ApplicatonBar有两种方式,刚才本地化是用的只是第一种方式,如果用第二种方式也就是代码的方式添加ApplicatonBar就不存在上面的问题了,把MainPage.xaml中ApplicationBar部分的代码注释掉,在MainPage()函数中添加如下代码:
ApplicationBar = new ApplicationBar(); ApplicationBar.Buttons.Add(new ApplicationBarIconButton(new Uri("/Images/appbar.feature.email.rest.png", UriKind.Relative)) { Text = AppResource.Button1Text }); ApplicationBar.MenuItems.Add(new ApplicationBarMenuItem(AppResource.MenuItem1Text));
运行后发现满足我们的预期!
到此,本文的内容就结束了,内容很简单,但是如果实际动手并动脑了你会发现文中提到的很多意外,而偏偏是这些意外加深了我们的理解,希望对大家有所帮助!
示例代码下载
相关文章推荐
- Windows Phone学习系列(一):添加Application Bar及多语言支持
- 添加Application Bar及多语言支持
- [导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(6):为网站添加Silverlight支持.zip(6.31 MB)
- Notepad++添加新语言支持
- SourceInsight添加Ruby语言支持,其他语言类似
- 【后端】Popush后端添加对Haskell语言的支持
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(十二)多语言支持
- 添加语言支持。
- 如何为工程添加一个Installshield不支持的语言--艾泽拉斯之海洋女神翻译
- 如何在Windows 10 IoT Core中添加其他语言的支持,如中文
- java-cef系列视频第三集:添加flash支持
- ubuntu (16.04) server 英文原版 添加中文语言支持 消除java 程序、mysql 数据库不能处理中文的错误
- [导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(6):为网站添加Silverlight支持.zip(6.31 MB)
- android开发实战系列(12)-- 多语言支持
- MTK 65XX系列通过USB OTG添加Ethernet RJ45有线网卡支持
- 在VC工程中添加多语言支持[转]
- iOS--应用添加中文语言支持
- InstallShield 2012 Spring新功能试用(20): Suite/Advanced UI工程支持添加语言
- RedHat9添加语言支持
- How To: 为组件属性添加Design-time多语言支持