Windows Phone 操作系统已经于 2025 年正式停止支持,其应用商店也已关闭。 这份教程主要是为了学习历史、理解微软移动生态的演进,或者用于维护遗留项目,不适合用于开发新的、面向市场的商业应用。

尽管如此,学习 Windows Phone 开发仍然有其价值,它能让你了解微软早期的跨平台框架(如 Silverlight 和 XNA),这些技术思想对后来的 UWP 和 .NET MAUI 产生了深远影响。
第一部分:历史背景与开发环境
Windows Phone 的终结
- 停止支持时间:2025 年 10 月 8 日,微软正式停止了对 Windows Phone 8.1 的支持。
- 应用商店关闭:Windows Phone Store 已关闭,开发者无法上传新应用,也无法对现有应用进行更新。
- 现状:Windows Phone 已成为历史,微软在移动端的战略是 Android 和 iOS,并通过其跨平台框架 .NET MAUI 来支持这些平台。
开发环境回顾
Windows Phone 开发主要依赖以下工具和技术栈:
- 核心 IDE:Visual Studio,通常是 Visual Studio 2025 或更早版本。
- 主要开发框架:
- Silverlight for Windows Phone:这是 WP7 和 WP8 的主要框架,类似于 Web 开发,使用 XAML(可扩展应用程序标记语言)进行界面设计,C# 进行逻辑编写。
- Windows Phone Runtime (WinPRT):WP8.1 引入的新框架,与 Windows 8.1 的 WinRT 框架统一,性能更好,API 更现代。
- XNA (Microsoft XNA Game Studio):主要用于开发 2D 和简单的 3D 游戏,WP7 和 WP8 都支持。
- 语言:C# 是绝对的主流。
- UI 设计:XAML,一种基于 XML 的声明式语言,用于构建用户界面。
- 数据库:内置了 SQLite 和 LINQ to SQL 等支持。
第二部分:开发教程(以 Silverlight 为例)
由于 WinPRT 与后来的 UWP 非常相似,而 Silverlight 是最经典、最容易入门的版本,我们以 Windows Phone 8.1 (Silverlight) 为例,创建一个简单的 "Hello, World!" 应用。
步骤 1:安装开发环境
-
下载 Visual Studio 2025 Community:这是最后一个对 Windows Phone 开发提供良好支持的免费版本。
(图片来源网络,侵删)- 下载地址:Visual Studio 2025 Community
- 安装时,请务必勾选以下工作负载:
- Windows Phone 8.1 SDK
- .NET 桌面开发 (可选,但推荐)
-
准备 Windows 10 模拟器:WP8.1 模拟器依赖于 Hyper-V 和 Windows 10 SDK,如果你的系统是 Windows 10/11,可以在 Visual Studio 安装程序中添加 "使用 C++ 的桌面开发" 工作负载来获取 Hyper-V 组件。
步骤 2:创建新项目
- 打开 Visual Studio 2025。
- 选择 "文件" -> "新建" -> "项目"。
- 在模板中,导航到 "Visual C#" -> "Windows Phone" -> "Windows Phone Silverlight 应用"。
- 为你的项目命名(
HelloWPApp),然后点击 "确定"。
步骤 3:理解项目结构
MainPage.xaml:这是应用的主界面文件,你将在这里设计 UI。MainPage.xaml.cs:这是主界面的后台代码文件,你将在这里编写 C# 逻辑。App.xaml和App.xaml.cs:应用的全局配置和启动逻辑。
步骤 4:修改 UI (XAML)
打开 MainPage.xaml,你会看到类似这样的代码:
<phone:PhoneApplicationPage
x:Class="HelloWPApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot 是包含所有页面的根网格-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel 包含应用名称和页标题-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
<TextBlock Text="主页" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - 在此处放置其他内容-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
</Grid>
</Grid>
</phone:PhoneApplicationPage>
在 <Grid x:Name="ContentPanel"> 和 </Grid> 之间,添加一个 TextBlock 控件来显示 "Hello, Windows Phone!":
<!--ContentPanel - 在此处放置其他内容-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock
Text="Hello, Windows Phone!"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="36"/>
</Grid>
步骤 5:编写逻辑 (C#)
在这个简单的例子中,我们不需要在后台代码中做太多事情,但我们可以通过 C# 来动态修改 TextBlock 的内容。

打开 MainPage.xaml.cs,在 public MainPage() 构造函数中添加一行代码:
using System;
using System.Windows;
using Microsoft.Phone.Controls; // 确保添加了这个命名空间
namespace HelloWPApp
{
public partial class MainPage : PhoneApplicationPage
{
// 构造函数
public MainPage()
{
InitializeComponent();
// 在页面加载时执行
Loaded += (sender, e) =>
{
// 通过 Name 找到 XAML 中的 TextBlock
var helloText = this.FindName("HelloTextBlock") as TextBlock;
if (helloText != null)
{
helloText.Text = "你好,世界!";
}
};
}
}
}
注意:为了让上面的代码工作,你需要在 XAML 中给 TextBlock 一个 x:Name 属性:
<TextBlock
x:Name="HelloTextBlock"
Text="Hello, Windows Phone!"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="36"/>
步骤 6:运行和调试
- 在 Visual Studio 的工具栏上,选择目标设备,你可以选择 Windows Phone 模拟器 或连接的实体手机。
- 点击绿色的 "启动" 按钮(或按 F5)。
- Visual Studio 会编译你的应用,并在模拟器中启动它,你应该会看到一个屏幕,上面显示着 "你好,世界!"。
第三部分:核心概念与进阶
-
页面导航:
- Windows Phone 应用由多个
PhoneApplicationPage组成。 - 导航使用
NavigationService,从当前页面跳转到另一个AnotherPage.xaml:NavigationService.Navigate(new Uri("/AnotherPage.xaml", UriKind.Relative));
- Windows Phone 应用由多个
-
数据绑定:
- 这是 XAML 的核心功能,你可以将 UI 控件的属性(如
Text)直接绑定到 C# 代码中的数据对象上,实现 UI 和数据的自动同步。
- 这是 XAML 的核心功能,你可以将 UI 控件的属性(如
-
控件与布局:
- 布局容器:
Grid(网格)、StackPanel(堆栈面板)、ScrollViewer(滚动视图)等,用于组织和定位控件。 - 常用控件:
TextBlock(文本)、Button(按钮)、TextBox(文本框)、ListBox(列表框)、ProgressBar(进度条)等。
- 布局容器:
-
本地存储:
- IsolatedStorage:提供类似文件系统的沙盒存储空间,用于保存应用的设置、文件等。
- SQLite:轻量级的关系型数据库,适合存储结构化数据。
-
传感器与硬件:
可以通过 API 访问设备的加速度计、陀螺仪、摄像头、GPS 等硬件。
第四部分:现代替代方案
既然 Windows Phone 已死,如果你想做跨平台移动开发,应该关注以下现代技术:
-
.NET MAUI (Microsoft's Recommended):
- 是什么:.NET Multi-platform App UI,是 .NET 6/7/8 的一部分,是 Xamarin.Forms 的演进版。
- 优点:真正的单一代码库,一套 C# 和 XAML 代码可以编译成原生的 Android、iOS、Windows 和 macOS 应用,性能更好,与 .NET 生态系统深度集成。
- 学习资源:Microsoft .NET MAUI 官方文档
-
Xamarin (Legacy but still functional):
- 是什么:.NET MAUI 的前身,使用共享代码库和平台特定的 UI 渲染器。
- 现状:虽然仍被支持,但微软已将重心完全转向 .NET MAUI,新项目应优先选择 MAUI。
-
React Native / Flutter:
- 是什么:由 Facebook (Meta) 和 Google 推出的跨平台框架,使用 JavaScript/Dart 和声明式 UI。
- 优点:拥有庞大的社区和丰富的第三方库,UI 渲染性能优秀。
- 选择:如果你的团队更熟悉 Web 前端技术,或者需要访问特定于这些框架的生态系统,它们是很好的选择。
- 历史价值:Windows Phone 开发是微软移动探索史的重要一页,学习它有助于理解微软在跨平台技术上的演变。
- 实践意义:对于个人学习或维护旧项目,这份教程提供了入门指南。
- 未来方向:对于新的移动开发项目,请务必选择现代且活跃的框架,如 .NET MAUI、React Native 或 Flutter。
希望这份教程能帮助你了解 Windows Phone 开发的世界!
