windows phone 8使用体验,如何为 Windows Phone 8 创建基本的本地数据库应用,如何部署和运行 Windows Phone 8 的应用...
windows phone 8使用体验
我用windows phone8快半年了我来告诉你吧。
1、汉字和英文输入体验不好,这个系统不能自定义输入法 ,只能使用系统自带的微软输入法,但是这个输入法相当慢,还有点卡。
2、短信和有道词典都木有什么问题。
3、和windows8不能比,一个是手机系统,一个是电脑系统。
4、和安卓对比。
缺点在于:1、windows phone8不能监控流量;2、不能把软件安装到SD卡,所以你要买的话手机内存要大;3、windows phone8系统不能多任务同时运行程序,比如登录QQ,切出QQ画面之后,QQ立刻断网,接收消息是通过腾讯发给微软,微软在发给终端这样子推送消息,我们的QQ和微信接收消息大部分情况下会有延迟,延迟时间不等,最快的几十秒,延迟多的几个小时也有过。4、电池电量不是按百分比显示;5:没有来电归属地,6:wp系统的软件更新速度极慢,相对安卓和苹果,要比他们的软件更新慢好几个时代。
优点在于:1、界面简洁漂亮;2:相对安卓省流量省电;3:系统运行流畅,很少卡顿。4、拍照功能很好用。
最后,不会出现你说的那种情况。
如何为 Windows Phone 8 创建基本的本地数据库应用
创建应用 UI
若使用 Windows Phone SDK,则使用 Windows Phone 应用 模板创建新项目。
创建好项目后,从 “项目” 菜单中选择 “添加现有项”。该操作将打开“添加现有项”菜单,我们可以从中选择用于删除待办事项的图标。
在“添加现有项”窗口中,导航到以下路径并选择命名为 appbar.delete.rest.png 的图标。该图标设计用于深色背景并且颜色为白色;该图标在“添加现有项”窗口的白色背景中可能显示为空白。
C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Icons\dark
注意:
此步骤假定采用的是以默认方式安装的 Visual Studio。如果您将其安装在其他位置,则在相应的位置查找图标。
单击“添加”。该操作将图标添加到解决方案资源管理器中的列表。
在“解决方案资源管理器”中,右键单击图标并设置文件属性,以便以“内容”的形式生成图标并且始终复制到输出目录(“始终复制”)。
在 MainPage.xaml 上,删除名为 LayoutRoot 的 Grid 的 XAML 代码,并替换为以下代码。
XAML
<ListBox x:Name="toDoItemsListBox" ItemsSource="{Binding ToDoItems}"
Grid.Row="0" Margin="12, 0, 12, 0" Width="440">
<CheckBox
IsChecked="{Binding IsComplete, Mode=TwoWay}"
Grid.Column="0"
VerticalAlignment="Center"/>
<TextBlock
Text="{Binding ItemName}"
FontSize="{StaticResource PhoneFontSizeLarge}"
Grid.Column="1"
VerticalAlignment="Center"/>
<Button
Grid.Column="2"
x:Name="deleteTaskButton"
BorderThickness="0"
Margin="0"
Click="deleteTaskButton_Click">
<TextBox
x:Name="newToDoTextBox"
Grid.Column="0"
Text="add new task"
FontFamily="{StaticResource PhoneFontFamilyLight}"
GotFocus="newToDoTextBox_GotFocus"/>
<Button
Content="add"
Grid.Column="1"
x:Name="newToDoAddButton"
Click="newToDoAddButton_Click"/>
XAML 代码将向应用添加两个 Grid 元素。其中一个 Grid 包含显示待办事项的 toDoItemsListBox。随着绑定到列表的待办事项越多,ListBox 的尺寸将有所增加,逐渐将第二个 Grid 推向屏幕下方。另一个 Grid 元素包含用来输入新待办事项的 newToDoTextBox 和Button。
生成数据上下文
在本节中,将指定一个确定数据库架构的对象模型并创建数据上下文。
生成数据上下文
打开主页的代码隐藏文件(名为 MainPage.xaml.cs)。该页面将包含大部分应用逻辑。为了简便起见,该应用将特意保留在一个页面中。实际应用通常会使用模型-视图-视图模型 (MVVM) 编程模式。有关更多信息,请参见实现面向 Windows Phone 8 的模型视图查看模型模式。
该应用需要引用 Windows Phone 的 LINQ to SQL 程序集。从“项目”菜单中,单击“添加引用”,从“程序集/框架”列表中选择“System.Data.Linq”,然后单击“确定”。
注意:
当面向 Windows Phone 8 时,使用 Windows Phone 应用 模板的新应用自动引用该程序集。
在页面顶部添加以下指令。
C#
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.ComponentModel;
using System.Collections.ObjectModel;
在 MainPage 类下,添加以下代码。这是一个名为 ToDoItem 的实体类,表示本地数据库中应用的数据库表。该类实现INotifyPropertyChanged 以进行更改跟踪。实现 INotifyPropertyChanging 有助于限制与更改跟踪相关的内存占用。表属性 [Table] 指示 LINQ to SQL 运行时将类映射到本地数据库表。
C#
[Table]
public class ToDoItem : INotifyPropertyChanged, INotifyPropertyChanging
{
// Define ID: private field, public property and database column.
private int _toDoItemId;
[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
public int ToDoItemId
{
get
{
return _toDoItemId;
}
set
{
if (_toDoItemId != value)
{
NotifyPropertyChanging("ToDoItemId");
_toDoItemId = value;
NotifyPropertyChanged("ToDoItemId");
}
}
}
// Define item name: private field, public property and database column.
private string _itemName;
[Column]
public string ItemName
{
get
{
return _itemName;
}
set
{
if (_itemName != value)
{
NotifyPropertyChanging("ItemName");
_itemName = value;
NotifyPropertyChanged("ItemName");
}
}
}
// Define completion value: private field, public property and database column.
private bool _isComplete;
[Column]
public bool IsComplete
{
get
{
return _isComplete;
}
set
{
if (_isComplete != value)
{
NotifyPropertyChanging("IsComplete");
_isComplete = value;
NotifyPropertyChanged("IsComplete");
}
}
}
// Version column aids update performance.
[Column(IsVersion = true)]
private Binary _version;
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
// Used to notify the page that a data context property changed
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
#region INotifyPropertyChanging Members
public event PropertyChangingEventHandler PropertyChanging;
// Used to notify the data context that a data context property is about to change
private void NotifyPropertyChanging(string propertyName)
{
if (PropertyChanging != null)
{
PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
}
}
#endregion
}
ToDoItem 类具有三个公共属性,分别与三个数据库列相对应:
重要说明:
为了限制更改跟踪所需的内存占用,请始终对数据上下文中的对象实现 INotifyPropertyChanging 接口。
ToDoItemId:由数据库自动填充的标识符列。同时,该列也是一个主键,系统会为其自动创建数据库索引。这些以及其他设置均使用在属性语法上方编写的 LINQ to SQL Column 映射属性指定。
ItemName:存储待办事项文本的列。
IsComplete:存储待办事项完成状态的列。
在 MainPage 类下,添加以下代码。这是一个名为 ToDoDataContext 的类。该类继承自 DataContext,被称为数据上下文。最重要的是,该代码将调用基构造函数并声明名为 ToDoItems 的数据库表。
C#
public class ToDoDataContext : DataContext
{
// Specify the connection string as a static, used in main page and app.xaml.
public static string DBConnectionString = "Data Source=isostore:/ToDo.sdf";
// Pass the connection string to the base class.
public ToDoDataContext(string connectionString)
: base(connectionString)
{ }
// Specify a single table for the to-do items.
public Table ToDoItems;
}
注意:
不要求数据库连接字符串必须为静态字段,该特定示例中仅为方便使用而要求。有关连接字符串的更多信息,请参阅 Windows Phone 8 的本地数据库连接字符串。
如何部署和运行 Windows Phone 8 的应用
关于在 Windows Phone 模拟器中调试和运行应用
当您首次在 Windows Phone 模拟器中运行 Windows Phone 应用时,将发生以下事件:
模拟器将会启动。
模拟器将加载 Windows Phone 操作系统。
模拟器将显示 Windows Phone“开始”屏幕。
将您的应用部署到模拟器。
您的应用将在模拟器上运行。
如果选定的 Windows Phone 模拟器已在运行,则您的应用将在正运行的模拟器中部署和启动。每个模拟器一次只能运行一个实例。
提示:
当在模拟器上测试您的应用时,请在调试会话之间将模拟器保持为打开状态,以便您可以重新快速运行您的应用。
关于在 Windows Phone 设备上部署和运行应用
将应用部署到 Windows Phone 设备之前,您需要先满足以下先决条件:
您必须是注册的开发人员。有关注册成为开发人员的信息,请参见注册信息。
必须注册手机。有关更多信息,请参见如何注册您的手机以进行开发。
必须将手机通过 USB 电缆连接到主机、打开并且解锁屏幕。
若要在 Windows Phone 8 设备上测试应用,需要符合以下条件:
USB 传输服务上的 Windows Phone IP 必须处于运行状态。当您安装 Windows Phone SDK 8.0 时,即安装并启动了该服务。
计算机必须可以识别已连接的设备。Windows Phone 8 手机作为驱动器列在文件资源管理器中。
若要在 Windows Phone OS 7.1 设备上测试应用,需要符合以下条件:
主机上必须安装 Zune 软件。若要下载和安装 Zune 软件,请转到 Zune 软件下载页面。
必须运行 Zune 软件。当您将手机连接到主机时,Zune 将自动启动。若 Zune 未启动,请手动将其启动。
Zune 软件必须可以识别已连接的设备。
若要获取关于应用部署的疑难解答,请参见本主题中的应用部署到手机的疑难解答部分。
您可以在注册的设备上部署最多 10 个应用。此限制不适用于从 商店 安装的应用。
如果您有面向 Windows Phone OS 7.1 的现有应用,我们建议您在 Windows Phone 8 设备上测试它们,以确保兼容性。有关可能的问题的详细信息,请参见 Windows Phone 8 的应用平台兼容性。
在 Visual Studio 中部署和运行应用
在 Visual Studio 中部署和运行应用的步骤
如果您正在将您的应用部署到已连接设备,请确保您已完成之前在本主题中列出的先决条件。
在 Visual Studio 中,打开一个 Windows Phone 项目。
在“标准”工具栏上,选择一个目标。
若要将您的应用部署到模拟器,请选择一个模拟器选项。
若要将您的应用部署到已连接设备,请选择“设备”选项。
若要进行调试再部署和运行您的应用,则在“调试”菜单上单击“开始调试”或按 F5。
若要不进行调试而直接部署和运行您的应用,则在“调试”菜单上单击“开始执行(不调试)”,或按 Ctrl+F5。
已部署并启动您的应用。
若要不运行而直接部署您的应用,则在“生成”菜单上单击“部署解决方案”。
停止运行的应用的步骤
若要停止运行的应用,请执行以下操作之一:
应用将退出并出现“开始”屏幕。此操作将结束当前调试会话。
在 Visual Studio 的“调试”菜单上,单击“停止调试”或按 Shift+F5。
在模拟器中或在手机上,按“后退”按钮以退出应用。如果应用的活动页面不是应用的开始页面,您可能需要多次按“后退”按钮。
不进行调试而直接重新启动应用的步骤
在模拟器中或在手机上,在“开始”屏幕上向左滑动以查看应用列表。
在应用列表中,点击应用图标。应用将重新启动(不进行调试)。
停用运行的应用的步骤
运行您的应用之前,在 Visual Studio 中右击“解决方案资源管理器”中的项目,然后选择“属性”以打开“项目设计器”。
如果您要在停用应用时使其进入休眠状态,请在“项目设计器”的“调试”页面上将“在调试期间停用时逻辑删除”复选框保持为未选中。如果您要在停用应用时将其逻辑删除,请选中该复选框。
在“调试”菜单中,单击“开始调试”或按 F5 以运行该应用。
在模拟器中或在手机上,按“开始”按钮。将显示“开始”屏幕并停用应用。应用将进入休眠状态或被逻辑删除,具体取决于“在调试期间停用时逻辑删除”复选框的设置。
重新激活处于休眠状态或被逻辑删除的应用的步骤
在模拟器中或在手机上,按“后退”按钮以返回到应用。如果您已导航至其他页面或已打开其他应用,您可能需要多次按“后退”按钮才能重新激活该应用。
调试会话将会恢复。如果调试器已从应用分离,您可能需要按 F5 以恢复调试会话。有关调试和重新激活的更多信息,请参阅如何测试 Windows Phone 的应用状态更改。
使用应用程序部署工具部署应用
您还可以使用 Windows Phone 应用程序部署工具 (XapDeploy.exe) 部署您的应用。此工具是安装 Windows Phone SDK 时安装的独立应用。
您可以使用安装在文件夹 C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment 中的应用程序部署工具的版本来部署面向 Windows Phone OS 8.0 或 Windows Phone OS 7.1 的应用。
您仅可以使用安装在文件夹 C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\XAP Deployment 中的应用程序部署工具的版本来部署面向 Windows Phone OS 7.1 的应用。
使用应用程序部署工具部署应用的步骤
生成您的应用。有关详细信息,请参见如何生成 Windows Phone 8 的应用。
如果您正在将您的应用部署到已连接设备,请确保您已完成之前在本主题中列出的先决条件。
从 Windows“开始”屏幕,启动应用程序部署工具。可以通过打开“所有应用”视图并在 Windows Phone SDK 8.0 组中进行查找,或者通过从“开始”屏幕键入应用程序部署进行搜索来找到应用程序部署工具。
您也可以从以下位置运行该工具:
C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment\XapDeploy.exe
将启动应用程序部署工具,如下所示。
在“目标”下拉框中,选择“设备”或其中一个模拟器选项。
单击“浏览”并查找您要部署的 XAP 文件。
单击“部署”。
如果部署成功,则“状态”字段会显示“XAP 部署完成”。
在命令提示符下部署应用
您也可以使用应用程序部署工具的命令行版本 XapDeployCmd.exe 部署应用。您可以通过调用此工具从脚本或从自定义应用部署应用。
XapDeployCmd.exe 安装在文件夹 C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment 中。
XapDeployCmd.exe 未提供用于不运行而直接部署新应用的选项。
重要说明:
Windows Phone 项目的命令行部署需要 Visual Studio 2012 Update 2。XapDeployCmd.exe 未包含在由 Windows Phone SDK 8.0 安装的 Visual Studio 2012 版本中。
在命令提示符下部署应用的步骤
生成您的应用。有关详细信息,请参见如何生成 Windows Phone 8 的应用。
如果您正在将您的应用部署到已连接设备,请确保您已完成之前在本主题中列出的先决条件。
打开命令提示符窗口。如果您的 PATH 环境变量未包含指向 XapDeployCmd.exe 的路径,请导航到文件夹C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment。
使用以下选项之一运行 XapDeployCmd.exe。
若要将您的应用部署到模拟器,请使用 xd 选项。
若要将您的应用部署到已连接设备,请使用 de 选项。
命令行部署语法和选项
XapDeployCmd.exe 具有以下语法:
XapDeployCmd.exe
下表介绍了用于 XapDeployCmd.exe 的命令行选项。
选项
描述
指定要运行的命令。此选项具有以下值之一:
选项描述
/installlaunch在设备上安装并运行应用。此选项需要 Xap FileName 参数。
/update更新已安装在设备上的应用。此选项需要 Xap FileName 参数。
/launch启动已安装在设备上的应用。此选项需要 Product ID 参数。
/uninstall从设备卸载应用。此选项需要 Product ID 参数。
/EnumerateDevices为每种设备列出有效的设备目标和数字索引。
指定应用的 GUID。可以在项目的应用清单文件 WMAppManifest.xml 中找到此值。
指定要安装或更新的 XAP 的完整路径。
指定目标设备。此选项具有以下值之一:
值描述
xd默认模拟器。
de已连接到开发计算机的 Windows Phone 设备。
n位于设备列表的索引 n 处的设备。若要获取设备列表,请运行XapDeployCmd.exe /EnumerateDevices。
命令行部署示例
下面是命令行部署的一些示例。以下示例假定 Product ID 为 f8ce6878-0aeb-497f-bcf4-65be961d4bba 且 Xap FileName 为 D:\PhoneApp1.xap。
XapDeployCmd.exe /installlaunch D:\PhoneApp1.xap /targetdevice:xd
在默认模拟器上安装 PhoneApp1,然后启动它。
XapDeployCmd.exe /launch f8ce6878-0aeb-497f-bcf4-65be961d4bba /targetdevice:de
在已连接设备上启动具有指定 Product ID 的应用。
XapDeployCmd.exe /update D:\PhoneApp1.xap /targetdevice:2
更新已在由设备索引 2 指定的设备上安装的 PhoneApp1。若要获取有效设备的列表,请使用/EnumerateDevices 选项。
XapDeployCmd.exe /uninstall f8ce6878-0aeb-497f-bcf4-65be961d4bba /targetdevice:xd
从默认模拟器卸载具有指定 Product ID 的应用。
XapDeployCmd.exe /EnumerateDevices
为每种设备枚举有效的设备目标和数字索引的列表。
应用部署到手机的疑难解答
将应用部署到 Windows Phone 8 手机取决于本地服务 USB 传输上的 Windows Phone IP (IpOverUsbSvc)。它还取决于手机是否作为 USB 设备正确的安装在开发计算机上。
通过检查 IpOverUsbSvc 服务排除连接问题
使用 USB 电缆将手机连接到开发计算机,打开手机,然后解锁手机屏幕。
打开“命令提示符”窗口,然后运行 IpOverUsbEnum 命令行工具。您可以在以下文件夹中找到此工具:
C:\Program Files (x86)\Common Files\Microsoft Shared\Phone Tools\CoreCon\11.0\Bin
检查该工具的输出。
手机是否通过 USB 电缆和开发计算机连接?
手机是否处于打开状态?
手机的屏幕是否已解锁?
在文件资源管理器中,手机是否在“计算机”下面显示为驱动器?
如果您看到几行有关手机及其上面运行的服务的信息,部署问题可能和 IpOverUsb 服务无关。
如果您看到消息 RPC Server Unavailable. Is the proxy running?,这表明 IpOverUsb 服务没有运行。打开“服务”管理单元,然后启动 USB 传输上的 Windows Phone IP (IpOverUsbSvc) 服务。
如果您看到消息 No connected partners found,请检查以下事项:
通过更新驱动程序解决连接问题的步骤
使用 USB 电缆将手机连接到开发计算机,然后解锁手机屏幕。
打开“设备管理器”。在“便携式设备”下,查找手机条目。
右击手机条目,然后选择“更新驱动程序软件”。按照步骤更新驱动程序。
开发环境和发布环境之间的重要差异
网络连接功能
当您将应用从 Visual Studio 部署到模拟器或手机时,将自动包含连接网络功能。但是,如果您的应用需要连接网络,则在向 商店 提交应用时,您仍然需要在应用的清单文件中显式指定该功能。如果您没有指定网络连接功能,则应用在用户手机上进行安装时将失败。有关更多信息,请参见 Windows Phone 8 应用功能和硬件要求。
写入应用的安装目录
当您将应用从 Visual Studio 部署到模拟器或手机时,应用可以写入其安装目录。但是通过 商店 部署和发布的应用无法写入到其安装目录。如果从 商店 安装的应用尝试写入到它的安装目录,将引发异常。当您开发并测试应用时,如果您将代码包含在您的应用中,而且该应用会写入它的安装文件夹,请确保在您将您的应用发布到 商店 之前删除此功能。
测试 Windows Phone OS 7.1 媒体 API
当您在已连接的设备上测试面向 Windows Phone OS 7.1 的应用时,通常会运行 Zune 软件。但是,当 Zune 软件运行时,您无法测试与媒体 API 交互的应用,因为 Zune 软件锁定了本地媒体数据库。若要测试面向 Windows Phone OS 7.1 的应用并使用媒体 API,您可以使用 Windows Phone 连接工具在不运行 Zune 软件的情况下,与设备建立串行或 USB 连接。有关更多信息,请参阅如何测试在 Windows Phone 中使用照片选择器或相机捕获任务的应用。
下一篇:没有了