通用应用是一种软件应用程序,它基于Windows 8.1或Windows 10的代码库编写,能够运行在Windows PC、平板电脑、智能手机、智能手表或XBox等多种设备上。但并不意味着同一个可执行文件会在所有这些环境中运行。例如,Windows手机和Windows PC使用不同类型的文件来执行,因此通用应用会提供不同的输出文件以适应不同的环境,但代码库是相同的。可以使用代码共享来为所有Windows环境创建应用程序。
假设已经在系统中安装了Windows 8.1的开发环境。如果没有,请从这里下载SDK。
创建一个新的项目,即“空白应用(通用应用)”,并给它起一个想要的名字。
当在解决方案资源管理器中查看时,会发现这里有三种类型的项目:Windows商店应用、Windows手机应用和共享项目。Windows商店应用将创建在Windows PC上运行的输出文件,Windows手机应用将创建在Windows手机上运行的输出文件,而共享项目将共享将在前两者中使用的代码。在这里,共享代码,但不共享设计,因此将为每种类型的应用单独在XAML中创建设计。
会看到,MainPage.xaml及其代码文件包含在两个项目中(Windows商店和Windows手机),而App.xaml包含在共享项目中。现在将共享MainPage.xaml的代码文件。因此,在共享项目中添加一个新类,名称与MainPage.xaml的代码文件相同,即MainPage.cs。将其设置为部分密封并继承自Page类。
// C# 代码
// MainPage.cs 在共享项目中
using System;
using System.Collections.Generic;
using System.Text;
using Windows.UI.Xaml.Controls;
namespace VilleIT_UniversalAppDemo
{
public sealed partial class MainPage : Page
{
}
}
将Windows手机应用文件和Windows商店应用文件中的所有代码移动到共享代码文件中,除了构造函数。
// C# 代码
// MainPage.cs 在共享项目中
using System;
using System.Collections.Generic;
using System.Text;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace VilleIT_UniversalAppDemo
{
public sealed partial class MainPage : Page
{
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}
}
}
在两个应用的XAML页面中添加一个按钮和一个文本块。
// XAML 代码
// MainPage.xaml 在Windows商店和Windows手机应用中
<Button Width="200" Height="100" Foreground="Black" Background="White" Content="Say Hello!" Name="btnSayHello" HorizontalAlignment="Center" FontSize="30" Click="btnSayHello_Click" />
<TextBlock Name="txtMessage" Foreground="Yellow" FontSize="30" HorizontalAlignment="Center" Margin="20" />
在共享代码文件中创建点击处理程序,它将被两个应用中的按钮调用。
// C# 代码
// MainPage.cs 在共享项目中
using System;
using System.Collections.Generic;
using System.Text;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace VilleIT_UniversalAppDemo
{
public sealed partial class MainPage : Page
{
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}
private void btnSayHello_Click(object sender, RoutedEventArgs e)
{
txtMessage.Text = "This is hello message";
}
}
}
通过以上步骤,可以创建一个通用应用,它可以在不同的Windows设备上运行,并且共享大部分代码,但为每种设备类型提供不同的用户界面设计。
这种开发方式的优势在于,开发者可以利用代码共享来减少重复工作,同时为不同的设备提供优化的用户体验。