上一节中我们学习了如何将应用设置保存到本地,这种方式是通过在app内添加设置选项,这里还有一种方式。微软将其称为“设置”合约,并且所有的windows应用商店应用都将自动配合这种合约。但是应用自带的这种设置如果不做任何修改可谓毫无作用。而我们添加这些设置则可以让应用更加个性化哦。
首先新建一个settingsflyout页面,也许很多童鞋会像我当初学这个一样立马就调试程序等着看看这个设置是长什么样,不过现在还用不了哦。
如下所示,我们可以修改iconsource来改变”设置“中的图标。
然后我将设置界面的布局设置如下咯。
先在app.xaml.cs中添加下面这条命名空间,和以下3个方法
当然了,在那些控件中的点击啥的最后都要在后台代码中添加的,就像上一篇博客那样来保存设置就好啦。
以上就是关于应用设置同样的内容咯,而应用帮助嘛,和这些都是一样的呀。创建同样的目标就好了。然后在xaml中修改成自己喜欢的样子就好啦。而且和应用设置一样,我们也可以在底部设置应用栏的,关于应用栏的内容可以查看第三章的“应用栏”一节。
上一节是关于如何添加应用设置和帮助,这一篇讲的是和设置类似的搜索。
so…… let’s do it !
先从简单的页面布局开始,想想我们需要什么,一个带搜索事件的button,还需要一些textblock来提示用户,核心部分自然是一个gridview咯。
既然界面完成了,就该去后台捣鼓咯。搜索的核心在于searchpane,所以先来实例化它。为了简化,我们就将待搜索的内容设置为一串字符串数组好了,当然了,初始化数组的方式大家随意就好了。
当用户在搜索框中输入的内容发生了更改时就会触发searchpane_querychange事件。
当用户在完成输入后按下enter键或者点击旁边的搜索确认按钮后就会触发searchpane_querysubmitted事件。
然后我们还需要这两个事件在onnavigatedto中绑定以及在onnavigatedfrom中解绑。
然后我们需要点击button控件来调出系统的搜索框,一行代码就足以搞定了。如果不想点击按钮也是可以得哦,可以让用户直接在键盘输入而调出搜索框呢。
最后别忘了将他们都放到mainpage()中哦,
所以说,总的代码是这样的。
在清单文件中声明你需要使用“search”功能后就可以开始调试咯。
大家肯定都用的音乐播放器肯定都会在搜索框下面给出一些建议吧,或者大家常用的地图等app。
那么我们就对前面的代码进行更新就好啦。
下面这段代码呢,就是根据用户的输入来显示建议列表的方法咯。
这篇博客,使用大量linq技术,如果不太懂的话可以看看这里。
【linq技术】扩展特性和linq操作符:http://blog.csdn.net/nomasp/article/details/45461517
使用搜索建议的最大好处在于我们可以选择并非自己输入的内容,这个功能就由下面这段代码提供动力支持。
我们还可以对前面的searchpane_querysubmitted函数做如下修改。
最后还需要将他们添加到onnavigatedto和onnavigatedfrom方法中。
然后调试就会是这个效果咯。
记得智能手机刚出来那会比较火的一个概念“能够复制粘贴的手机就是智能手机”。现在看来,这不过是个老掉牙的功能了,但实际用处却是非常强大的,那么现在我们就来试试怎么做到这个功能。
粘贴板的英文名叫做clipboard,这也是它的类名了。
新建工程这种就不说了,在xaml中代码如下:
在后台代码中写上这么一个方法:
standarddataformats是标准数据格式,这里判断它是否是text,如果是的话则让前面的button按钮可用(之前设为不可用,以灰色显示)。
标准数据格式有bitmap,html,rtf,storageitems,text,uri等。
然后在按钮的click事件中写如下代码:
这里我们使用了clipboard类的getcontent()方法,用于在剪切板中取出datapackageview对象数据;类似的还有setcontent(),用于把数据存入剪切板中。还有clear事件来清空剪切板,flush事件把数据从源写入到剪切板,并且在应用程序退出后依然保留在剪切板中。还有contentchanged事件在剪切板中存储的数据内容发生变化时自动激活以达到监听剪切板内容变化的效果。
大家可以试试,已经完成了,但我们可以做的更多,不是吗?
完整的代码如下:
现在它还可以复制图片了哦~
上一节简单介绍了通过粘贴板来共享数据,这一节将会添加更为强大的功能哦。
以下就是大概的样式了,随便看看就好了,这都不是重点。
这里通过3个stackpanel的“显示“与”隐藏“来达到在一个位置显示3个界面的功能,然后在后台通过以下方法更改visibility属性。
以下是核心代码,通过radiobutton的选择来共享不同的内容。这里没有进行try、catch异常检测,但在实际工程中则是必要的,因为如果你不共享任何内容而点击共享按钮你就知道了……
选择文件的方法我们在前面也都介绍过了,直接贴代码……
当然了,记得下面这些操作……
最后就是共享确认按钮了,一行代码搞定。
以上这个app,你将需要共享的数据从这里发出,也叫共享源,但共享到哪里了呢?
看到”共享图像“和”共享以下图片“想起来刚才的两行代码了么?这两个属性就用在了这里。
我们当然可以将数据共享到邮件、onenote里,但如果你是要写一个自己的接收共享数据的应用呢,如何来写?
接下来就来写另一个app咯,也就是上图中的app49了。首先在清单文件中做如下操作,当然了,具体要添加哪些东西大家自己看着办就好了。
然后添加一个xaml页面来接收数据,因为你不可能只让你的app专门用来接收数据咯,所以就不建议在mainpage中写了。
在新页面中大概做一下页面布局,我的布局通常来说都不是很美观的……
后台代码中写以下代码,核心在于if中的3个判断,就是3中共享的文件了咯。
接着我们就要来调试这两个程序啦。只需要将接受共享数据的app按f5运行后关掉就好了,因为它会部署到本地的,或者也可以在build选项卡中直接部署也是一样的。然后按f5运行共享数据的数据源app就好啦。
截图如下:
这张图片我压缩过了,不如太大上传不了,所以可能看不清楚吧。下面是共享文本数据的过程截图啦。
这个是共享图像的截图,忘了说了,在前面的spaceneedle1.jpg就是下面这张图片我已经事先添加到工程里了的。
紧接着我们共享这个docx文件,却发现在共享栏里没有了app49,发生了什么?
下面这首刚才添加的受支持的文件类型,明显没有添加.docx,所以这也是一个需要注意的地方。
而想知道如何算出10000的阶层可以看“100的阶层真的算不出来吗?” :http://blog.csdn.net/nomasp/article/details/45484979