Windows Phone 的现状
在开始之前,必须明确一点:Windows Phone (WP) 是一个历史平台,微软在 2025 年正式停止了对 WP 的支持,应用商店也已关闭。你无法将新应用发布到官方商店,也无法使用最新的 Windows 10 SDK 进行 WP 开发。

如果你仍然想学习或开发,可以基于现有的 SDK 和工具进行离线开发、学习和调试。
第一部分:开发环境搭建
我们将使用 Windows Phone 8.1 作为主要目标平台,因为它是最成熟且拥有最多资源的版本之一。
硬件和软件要求
- 操作系统:你需要一台运行 Windows 10 或 Windows 8.1 的电脑。
- 硬件:电脑配置无需太高,但 SSD 硬盘会显著提升 Visual Studio 的安装和运行速度。
- 模拟器:WP 模拟器需要 启用 Hyper-V 和 Windows Hypervisor Platform,这通常在 Windows 10/11 Pro/Enterprise 版本中默认可用,在 Windows 10/11 Home 版本中,Hyper-V 可能无法启用。
安装 Visual Studio
这是最关键的一步,你需要安装一个旧版的 Visual Studio,它包含了 WP 开发所需的 SDK。
-
下载 Visual Studio 2025:这是最后一个官方支持 Windows Phone 8.1 开发的稳定版本。
(图片来源网络,侵删)- 下载地址:Visual Studio 2025 Update 3 官方镜像
- 下载文件名为
vs_enterprise.exe的安装程序(企业版功能最全,社区版也可用,但下载链接可能不同)。
-
运行安装程序:
- 打开下载的
vs_enterprise.exe。 - 在安装界面,选择“自定义”安装。
- 在功能列表中,务必勾选以下组件:
- Microsoft Visual C++ 2025 Redistributable (x86) - x64 and ARM (这是运行时依赖)
- Windows 8.1 SDK (这是 WP 8.1 的基础)
- Windows Phone 8.1 SDK (核心开发工具包)
- Windows Phone Emulator (模拟器,用于在电脑上测试应用)
- Microsoft Azure SDK for .NET (如果需要后端服务)
- Silverlight for Windows Phone (可选,用于开发 WP 8.0 应用)
- 打开下载的
-
开始安装:点击“安装”并等待完成,这个过程可能需要一些时间。
验证安装
安装完成后,打开 Visual Studio 2025,创建一个新项目,你应该能看到 "Windows Phone" 或 "Windows Phone Silverlight" 的模板,这说明安装成功了。
第二部分:创建你的第一个 "Hello, World!" 应用
我们将使用 XAML (C#) 来开发,这是 WP 开发的主流方式。

步骤 1:创建新项目
- 打开 Visual Studio 2025。
- 选择 "文件" -> "新建" -> "项目..."。
- 在模板中,选择 "Visual C#" -> "Windows Phone" -> "Windows Phone 空白应用 (Windows Phone)"。
- 为你的项目命名,
HelloWP,然后点击 "确定"。
步骤 2:了解项目结构
- MainPage.xaml:这是应用的主界面,使用 XAML 语言进行声明式布局,你看到的控件和布局都在这里定义。
- MainPage.xaml.cs:这是与 MainPage.xaml 关联的 C# 代码文件,所有的逻辑、事件处理和数据绑定代码都在这里。
- App.xaml 和 App.xaml.cs:应用的全局资源和启动逻辑。
- Package.appxmanifest:应用的清单文件,定义了应用的名称、图标、功能权限等。
步骤 3:修改界面 (MainPage.xaml)
打开 MainPage.xaml,你会看到一个默认的网格布局,我们把它修改得更简单一些。
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBlock
Text="Hello, Windows Phone!"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="36"
FontWeight="Bold"
Foreground="White"/>
</Grid>
代码解释:
<Grid>:一个容器控件,用于排列子元素。Background:设置背景色,这里使用了系统定义的主题画笔。<TextBlock>:用于显示文本的控件。Text:要显示的文本内容。HorizontalAlignment="Center":水平居中。VerticalAlignment="Center":垂直居中。
步骤 4:运行和调试
-
确保工具栏上的目标设备是 "模拟器",你可以选择不同的模拟器(分辨率为 720p 或 1080p 的设备)。
-
按下 F5 键或点击绿色的 "开始调试" 按钮。
Visual Studio 会启动你选择的 Windows Phone 模拟器,然后部署并运行你的应用,很快,你就能看到一个黑色的屏幕上显示着白色的 "Hello, Windows Phone!" 文字,恭喜你,你的第一个 WP 应用运行成功了!
第三部分:核心概念和常用控件
导航
WP 应用是页面导航式的,使用 Frame 和 Page 来管理页面跳转。
-
导航到新页面: 在 C# 代码中,使用
Frame类。// 假设你有一个名为 SecondPage 的页面 this.Frame.Navigate(typeof(SecondPage));
-
传递参数:
Navigate方法可以传递一个对象作为参数。// 在导航时传递参数 this.Frame.Navigate(typeof(SecondPage), "Hello from Page 1!"); // 在 SecondPage.xaml.cs 中接收参数 protected override void OnNavigatedTo(NavigationEventArgs e) { string message = e.Parameter as string; if (!string.IsNullOrEmpty(message)) { // 使用 message... } } -
返回上一页:
if (this.Frame.CanGoBack) { this.Frame.GoBack(); }
常用 XAML 控件
-
Button:按钮,用于触发点击事件。
<Button Content="Click Me" Click="Button_Click" HorizontalAlignment="Center" VerticalAlignment="Center"/>
在 C# 代码中添加事件处理:
private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Button was clicked!"); } -
TextBox:文本输入框。
<TextBox Header="Enter your name" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,50,0,0"/>
-
ListBox:列表框,用于显示一个可滚动的项目列表。
<ListBox x:Name="myListBox" HorizontalAlignment="Center" VerticalAlignment="Center"> <ListBoxItem>Item 1</ListBoxItem> <ListBoxItem>Item 2</ListBoxItem> <ListBoxItem>Item 3</ListBoxItem> </ListBox> -
GridView:网格视图,以卡片式布局展示项目,非常适合图片等,这是现代 WP 应用的核心控件。
<GridView x:Name="myGridView" HorizontalAlignment="Center" VerticalAlignment="Center"> <GridViewItem> <Image Source="Assets/Logo.png" Width="100" Height="100"/> </GridViewItem> <!-- 可以添加更多 GridViewItem --> </GridView>
数据绑定
数据绑定是连接 UI 和数据的核心,它允许你用 C# 中的数据自动更新 XAML 界面。
示例:将数据绑定到 ListBox
-
创建数据模型 (C#):
public class Task { public string Title { get; set; } public string Description { get; set; } } -
准备数据源 (C#):
// 在 MainPage.xaml.cs 中 public MainPage() { InitializeComponent(); List<Task> tasks = new List<Task> { new Task { Title = "Task 1", Description = "Description 1" }, new Task { Title = "Task 2", Description = "Description 2" } }; myListBox.ItemsSource = tasks; // 将数据源绑定到 ListBox }
