Windows Phone 8 开发教程
第一部分:准备工作与开发环境搭建
在开始编码之前,你需要准备好一切。

硬件要求
- 操作系统:Windows 8 或 Windows 8.1 (32位或64位版本),Windows 7 不再受官方支持。
- 内存:至少 4GB RAM,推荐 8GB 或以上。
- 硬盘空间:至少 8GB 可用空间。
- 开发设备(可选但强烈推荐):
- 一台 Windows Phone 8 设备(如 Lumia 920, 1020 等),这是测试和调试的最佳方式。
- 如果你没有真机,可以使用 Windows Phone 模拟器,它会在你的电脑上创建一个虚拟的 Windows Phone 设备,非常方便。
软件安装
你需要安装以下软件,请务必按照顺序安装:
-
Windows Phone SDK 8.0
- 这是核心开发工具包,包含了所有必要的工具。
- 下载地址:https://developer.microsoft.com/en-us/windows/downloads/sdk-archive (找到 Windows Phone SDK 8.0 并下载)
- 安装包会自动包含:
- Visual Studio Express 2012 for Windows Phone:集成开发环境,用于编写代码、调试和设计界面。
- Windows Phone Emulator:模拟器。
- XAML Hot Reload for Windows Phone:一个调试工具,可以在运行时修改 XAML 并立即看到效果。
- Windows Phone SDK 8.0 Assemblies:开发所需的类库和组件。
-
(可选) Visual Studio 2012 专业版或更高版本
- 如果你已经安装了 Visual Studio 2012 专业版、旗舰版或更高版本,你只需要安装 Windows Phone SDK 8.0 的附加组件即可,Express 版本已经包含了所有你需要的功能。
环境验证
安装完成后,打开 Visual Studio Express 2012 for Windows Phone,在启动界面,选择 "新建项目"。

- 在左侧模板中,你应该能看到 "Visual C#" -> "Windows Phone" 分类。
- 在中间列表中,你应该能看到 "Windows Phone 空白应用程序 (Windows Phone)" 等模板。
如果能看到这些,说明你的开发环境已经成功搭建!
第二部分:创建你的第一个 "Hello World" 应用
我们将创建一个最简单的应用,在屏幕上显示 "Hello, Windows Phone 8!"。
创建新项目
- 打开 Visual Studio Express 2012 for Windows Phone。
- 选择 "文件" -> "新建" -> "项目..."。
- 在模板中,选择 "Visual C#" -> "Windows Phone" -> "Windows Phone 空白应用程序"。
- 为你的项目命名,
HelloWP8,然后点击 "确定"。
认识项目结构
创建项目后,你会看到几个核心文件:
MainPage.xaml:这是你的应用主界面的源文件,它使用 XAML (eXtensible Application Markup Language) 语言来描述 UI 元素(如按钮、文本框等)的布局和外观,双击打开它。MainPage.xaml.cs:这是与MainPage.xaml对应的 C# 代码文件,所有的逻辑、事件处理(如按钮点击)都在这里编写。App.xaml和App.xaml.cs:这是应用程序的入口点,用于处理全局事件,如应用启动、关闭等。Package.appxmanifest:应用的清单文件,定义了应用的名称、图标、功能权限等信息。
修改 UI (XAML)
打开 MainPage.xaml,你会看到一些默认的 XAML 代码,我们来做一些简单的修改:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<!-- 在这里添加你的内容 -->
<TextBlock Text="Hello, Windows Phone 8!"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="36"
FontWeight="Bold"
Foreground="White"/>
</Grid>
代码解释:
<Grid>:一个布局容器,用于排列子元素。<TextBlock>:一个用于显示只读文本的控件。Text="...":要显示的文本内容。HorizontalAlignment="Center":水平居中对齐。VerticalAlignment="Center":垂直居中对齐。FontSize="36":字体大小。FontWeight="Bold":字体加粗。Foreground="White":文本颜色为白色。
运行应用
让我们看看效果,在 Visual Studio 顶部,有一个目标设备选择的下拉菜单。
- 选择模拟器:从下拉菜单中选择一个 Windows Phone 模拟器(" WVGA 512MB")。
- 点击绿色 "播放" 按钮 (或按 F5):Visual Studio 会编译你的应用,并在模拟器中启动它。
几秒钟后,你就能看到模拟器界面中央显示着 "Hello, Windows Phone 8!",恭喜你,你的第一个 WP8 应用已经成功运行!
第三部分:核心概念与进阶
页面导航
Windows Phone 应用通常由多个页面组成,页面之间的导航是通过 Frame 和 Page 控件实现的。
Frame:一个容器,负责承载和显示一个Page,它管理着页面导航的历史记录(类似浏览器的前进/后退)。NavigationService:这是Frame提供的服务,用于在你的代码中进行页面跳转。
示例:如何跳转到新页面
- 添加新页面:在 "解决方案资源管理器" 中,右键点击项目 -> "添加" -> "新建项..." -> 选择 "Windows Phone 空白页",命名为
SecondPage.xaml。 - 在 MainPage.xaml 中添加一个按钮:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Content="Go to Second Page" Click="Button_Click" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"/> </Grid> - 在 MainPage.xaml.cs 中处理点击事件:
private void Button_Click(object sender, RoutedEventArgs e) { // 导航到 SecondPage.xaml this.NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative)); } - 在 SecondPage.xaml.cs 中添加返回按钮(可选,但推荐):
// 在 SecondPage 的构造函数中或 OnNavigatedTo 方法中添加 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { // 添加一个返回按钮 ApplicationBar = new ApplicationBar(); ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/appbar.back.png", UriKind.Relative)); appBarButton.Text = "back"; appBarButton.Click += (s, args) => { this.NavigationService.GoBack(); }; ApplicationBar.Buttons.Add(appBarButton); }注意:你需要自己准备一个
appbar.back.png图标,并添加到项目中。
数据绑定
数据绑定是 MVVM (Model-View-ViewModel) 模式的核心,它能让 UI 控件自动显示数据源的变化,而无需手动更新。
简单示例:绑定一个字符串
-
在 MainPage.xaml.cs 中定义一个属性:
public partial class MainPage : PhoneApplicationPage { // 简单的属性 public string WelcomeMessage { get; set; } public MainPage() { InitializeComponent(); // 设置属性值 WelcomeMessage = "Welcome to Data Binding!"; // 设置数据上下文 this.DataContext = this; } } -
在 MainPage.xaml 中使用绑定:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Text="{Binding WelcomeMessage}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="36"/> </Grid>{Binding WelcomeMessage}告诉 TextBlock,它的 Text 属性应该从当前数据上下
