zj2092 发表于 2015-5-13 12:38:48

windows phone 7 31天学习笔记 21:Silverlight工具包

  原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-21-Silverlight-Toolkit-for-Windows-Phone.aspx
  本文主要讨论Silverlight工具包。
  什么是工具包?
  原始的Silverlight工具包是在程序包需要的额外的一堆东西。控件从图表到自动完成都包含。这些都是很神奇的东西。
  同样的wp7的Silverlight工具包想法和上边移植,但是不仅仅这些,他还包含额外的东西:

   
[*]ConentMenu   
[*]DatePicker&TimePicker   
[*]GestureListener   
[*]ToggleSwitch   
[*]WrapPanel
  我将会花费本文的剩下的部分来讨论如何使用这些控件。有一堆的控件,我只会使用部分来进行讨论。
  ContextMenu控件
  如果你有机会将一些东西固定到开始页面,我觉得ContextMenu能偶将这个功能实现。下面是实现的图片:

  为了让菜单出现,我们需要像以前那样添加对于Silverlight的引用。

  添加完以后,我们需要添加命名空间到XAML文件中,你需要添加标签到页面头部:

   xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
  现在回到正题上,让我们提供一个普通控件的更多属性。如果我们有一个形状、图像或是其他,我们的用户需要进行交互。也许你需要的不只是一个矩形,通过添加一个ContextMenu到矩形上,我们能够在用户点击以后弹出一个菜单。这可以是任何XAML元素,甚至是全景视图的背景图片或是一个按钮。












  我们已经绑定了ContextMenuService,并且添加了ContextMenu到我们的特定控件中。你可以看到每一元素都是具有Click事件,他允许我们将这些按钮选型反馈到代码中。

  如果你在模拟器中进行测试,你也许同样注意到背景在放回后变大了一点,这些将菜单逮到了前部正中来引起用户注意。你也许想要这种行为,所以选项有IsZoomEnabled这个属性。将它设置为false将会停止放大效果。
  这添加一个类似右键菜单的东西是很简单的,这将会是最有用的六个组件之一。
  DatePicker和TimePicker控件
  当我准备这一部分代码的时候,我面临两个有趣的挑战。这太过直白以至于我自己都不知道为什么错了。解决它需要一点魔法。我将会讨论它,首先,添加这两个控件到我们的页面中:





  添加完以后就可以工作,他们允许用户选择时间。

  现在讨论先前说到的问题。你将会注意到,有一个程序栏,他包含两个按钮。在点击以后,我意识到他们是完成和取消按钮,他们覆盖住了字符。
  为了让按钮正常工作,你需要这样做:
  1工程根目录下创建一个文件夹,命名为“Toolkit.Content”
  2 添加两张图片到其中,命名为:
  1 ApplicationBar.Cancel.png
  2 ApplicationBar.Check.png
  3 确保将这些内容在编译前设置为“Content”,如下图:

  完成以后就能正常工作了:

  GestureListener控件
  知道现在你也许好奇如何处理用户手势。本文将会给出答案。
  好了,开始讨论GestureListener.想ContextMenu一样,我们将会让GestureService知道我们创建了一个GestureListener,然后对于特定的动作出发特定的操作。记住,我们将其应用到xaml元素中,这样手势将会被所应用的控件所识别。下面是使用的手势类型:


[*]Tap
[*]DoubleTap
[*]Hold
[*]Flick
[*]Pinch
[*]Drag and Drop
  这些都是相同的使用方式,并且也特别容易实现。Pinch和Drag有点技术难度。下面是代码:








  正如你所见,我可以定义自己想要识别的手势,然后给他们赋予处理事件。
  ToggleSwitch控件
  正如你所见到的,他可以更改设置:

  这很简单:




  上边的截图中,说到的“24小时时钟”,我的例子将会读作“自动接收更
  新”。开启/关闭是自动的。如果你想自定义更多控件,这将会很简单。有一个HeadTemplate和一个ContentTemplate这些允许我们让控件成为自己独有的。在滑动以后将会触发开启或是关闭事件。





















  最后,我们拥有了WarpPenel。他的意图很明显,非正式的控件。
  WrapPanel控件
  一个WrapPenel是一个具备额外设置的StackPanel。我创建一个游戏前些时候,然后我想创建一个有30个按钮的屏幕。既然这些之前通过WrapPanel可以实现,我需要动态创建一个Grid,然后给每一个添加到Grid中。比我想的要简单,只需要把30个按钮放到5x6的框架中。WrapPanel帮我解决了这个问题。

















  如下的截图,我们可以看到WrapPanel动态决定了每一个的大小,并且将最后一个放到了下一行。不需要讨论更多关于如何保持正确显示。

  我的代码中,你将会看到两个按钮。他们的尺寸自动缩放,写一个例子试试:
页: [1]
查看完整版本: windows phone 7 31天学习笔记 21:Silverlight工具包