×
Namespaces

Variants
Actions
Revision as of 08:01, 17 July 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

如何在Windows Phone 7上使用Auto Complete Box

From Nokia Developer Wiki
Jump to: navigation, search
WP Metro Icon UI.png
WP Metro Icon Tools.png
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata

代码示例
兼容于
文章
翻译:
最后由 hamishwillee 在 17 Jul 2013 编辑

这篇文章展示了如何在Windows Phone 7上使用AutoCompleteBox。

Contents

前提条件

AutoCompleteBox在默认的ToolBox中是没有的,所以我们需要从这里下载一个Silverlight Toolkit来使用AutoCompleteBox工具。如果还没有安装toolkit,请跟随下面的步骤进行安装。

安装Silverlight Toolkit

  • 从http://silverlight.codeplex.com/releases/view/60291下载.msi文件。
  • 在下载了.msi文件后,双击并安装。在安装成功后,重新启动Visual Studio 2010。(你也可以在执行此步骤前创建一个新的项目)
  • 在检查安装后,将鼠标移到ToolBox上>>右击'Windows Phone Controls' >>选择Items。现在你可以在tool list里看到'AutoCompleteBox'了。

AutoCompleteBox tool in the tools list

开始个新项目

  • 在Visual Studio 2010里创建一个新的项目>>>>New Project>>Windows Phone Application - Visual C#。并给该项目命名一个名称。

Creating a new Project in Windows Phone 7 using Visual C#

使用IEnumerable

  • 现在,我们需要从IEnumerable接口派生一个类。右击项目的Project Explorer>>Add>>New Item>>Class(在这里,我们为我们的类命名为'SampleWords')
  • 如果我们从IEnumerable接口派生类,那么GetEnumerator()是强制要求实现的。所以,我们的类在定义时必须按下面所示来进行。
namespace SampleAutoCompleteBox
{
public class SampleWords : IEnumerable
{
public IEnumerable AutoCompletions = new List<string>()
{
"Lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "Nullam", "felis", "dui", "gravida", "at",
"condimentum", "eget", "mattis", "non", "est", "Duis", "porta", "ornare", "tellus", "at", "convallis", "nibh", "aliquam",
"faucibus", "Vivamus", "molestie", "fringilla", "ullamcorper", "Aenean", "non", "diam", "eu", "sapien", "pretium", "iaculis",
"Quisque", "at", "ante", "libero", "eu", "tincidunt", "urna", "Cras", "libero", "ligula", "hendrerit", "at", "posuere", "at",
"tempor", "at", "nulla", "Aliquam", "feugiat", "sagittis", "dolor", "convallis", "porttitor", "neque", "commodo", "ut", "Praesent",
"egestas", "tincidunt", "lectus", "et", "pharetra", "enim", "semper", "et", "Fusce", "placerat", "orci", "vel", "iaculis",
"dictum", "nulla", "sem", "convallis", "nunc", "in", "viverra", "leo", "mauris", "eu", "odio", "Nullam", "et", "ultricies",
"sapien", "Proin", "quis", "mi", "a", "sapien", "semper", "lobortis", "ut", "eget", "est", "Suspendisse", "scelerisque", "porta",
"mattis", "In", "eleifend", "tellus", "vel", "nulla", "aliquam", "ornare", "Praesent", "tincidunt", "dui", "ut", "libero",
"iaculis", "consequat", "Nunc", "interdum", "eleifend", "rhoncus", "Curabitur", "sollicitudin", "nulla", "sagittis", "quam",
"vehicula", "cursus", "Fusce", "laoreet", "arcu", "vitae", "fringilla", "scelerisque", "nisi", "purus", "laoreet", "ipsum", "id",
"suscipit", "erat", "tellus", "eu", "sapien", "Proin", "pharetra", "tortor", "nisl", "Etiam", "et", "risus", "eget", "lectus",
"vulputate", "dignissim", "ac","sed", "erat", "Nulla", "vel", "condimentum", "nunc", "Suspendisse", "aliquam", "euismod", "dictum",
"Ut", "arcu", "enim", "consectetur", "at", "rhoncus", "at", "porta", "ut", "lacus", "Donec", "nisi", "quam", "faucibus", "tempor",
"tincidunt", "eu", "porttitor", "id", "ipsum", "Proin", "nec", "neque", "nulla", "Suspendisse", "sapien", "metus", "aliquam", "nec",
"dapibus", "consequat", "rutrum", "id", "leo", "Donec", "ac", "fermentum", "tortor", "Pellentesque", "nisl", "orci", "tincidunt",
"at", "iaculis", "vitae", "consequat", "scelerisque", "ante", "Suspendisse", "potenti", "Maecenas", "auctor", "justo", "a", "nibh",
"sagittis", "facilisis", "Phasellus", "ultrices", "lectus", "a", "nisl", "pretium", "accumsan"
};
 
public IEnumerator GetEnumerator()
{
return AutoCompletions.GetEnumerator();
}
}
}
  • 不要忘记在代码中添加下面两行指令
using System.Collections; // for 'IEnumerable'
using System.Collections.Generic; // for 'List'
  • 因此,我们声明一系列字符串作为我们的样本字符串。现在让它们工作在UI上。


利用SampleWords 类将UI和Auto Complete Box结合起来

  • 我们在xaml文件中已经有包括命名空间在内的Strings类(SampleWords类根据这个例子创建),我们需要把Auto Complete box添加进去。
  • 我们需要将下面的代码加入到MainPage.xaml中。
xmlns:local="clr-namespace:SampleAutoCompleteBox"

xmlns:local总是指向了最顶端的命名空间。所以,我们需要在SampleAutoCompleteBox命名空间中定义SampleWords.cs(就像是你的项目名)。

  • 在MainPage.xaml文件中创建/声明一个静态的资源,就像下面的示例所示。
<phone:PhoneApplicationPage.Resources>
<local:SampleWords
x:Key="AutoCompletions" />
</phone:PhoneApplicationPage.Resources>

在这里,'local:'在我们声明的一系列字符串中已经有了类文件名。同时我们也定义了一个'AutoCompletions'主键以备我们以后要使用。

  • 现在我们从Toolkit中拖拽一个AutoCompleteBox控件到MainPage的设计界面。这时,相应的代码将被写入代码视图。
  • 我们将会将值'StaticResource AutoCompletions"指派给属性'ItemsSource'就如下图所示。
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<toolkit:AutoCompleteBox HorizontalAlignment="Left" Width="450" Grid.Row="0"
Name="autoCompleteBox1" VerticalAlignment="Top"
ItemsSource="{StaticResource AutoCompletions}"/>
</Grid>
  • 将现在所建的项目运行来观察AutoCompleteBox tool的运行状况。

Ui AutoCompleteBoxTool.PNG

源代码

	在文章中的示例可以从下面的网站下载:
	Media:SampleAutoCompleteBox.zip
This page was last modified on 17 July 2013, at 08:01.
127 page views in the last 30 days.
×