这几天将本本升级为 Windows 8,主要是为了安装 Windows Phone 8 的开发环境。
使用 MSDN 订阅下载了 Visual Studio 2012 Ultimate 中文版本,然后下载了 Windows Phone 8 SDK(注意:此处我犯了错误)。
由于下载的是 Windows Phone 8 SDK 英文版本,在安装此 SDK 时虽然已经安装了 VS2012,但下载过程中却自动下载了 VS 2012 Express 版本。刚开始我没有注意到安装了 VS 2012 Express,仍然使用 Visual Studio 2012 Ultimate。发现在创建 Windows Phone 8 的工程后,会提示要安装 SDK。
我不是已经安装了 Windows Phone 8 的 SDK 了吗?在 Visual Studio 2012 Ultimate 的帮助中查看,这时发现了 Windows Phone 8 的 SDK 是英文版本的。同时返回 Windows 8 Metro 界面,看到了 VS 2012 Express 的磁片。
果断卸载 Windows Phone 8 英文版的 SDK(VS 2012 Express 一起被卸载),安装 Windows Phone 8 中文版的 SDK 后一切 OK。
真是折腾人啊!
如果您选择 Windows Phone OS 8.0 作为目标版本,您的应用将仅能在 Windows Phone 8 设备上运行。
如果您选择 Windows Phone OS 7.1,您的应用可以同时在 Windows Phone OS 7.1 和 Windows Phone 8 设备上运行。
独立存储资源管理器 (ISETool.exe) http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/hh286408(v=vs.105).aspx
对文本属性(尤其是大小或前景画笔)进行动画处理可能会占用大量系统资源。这是因为 Windows Phone 在呈现文本时会使用提示对每一文本标志符号进行平滑处理 http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/cc189010(v=vs.105).aspx
TextBox 通常用于捕获用户的文本输入。PasswordBox 通常用于身份验证方案。这两种控件之间的主要区别在于:在 PasswordBox 中键入的字符显示出来,而在 TextBox 中键入的字符显示为掩码字符。---Leo.Zheng 写反了吧!!!
接下来安装 Zune,也是一开始就报错。看看错误提示,居然说有一个安装程序正在运行。直接重启,再安装。安装过程中提示需要 .Net Framework 2.0 或 3.0 的 runtime。晕,Windows 8 没有这些,还是不是 MS 自己的东东啦。先下载安装 .Net,再安装 Zune 成功。插入 WP 手机,Zune 启动了。
1 // 代码设置输入的键盘类型 2 InputScope scope = new InputScope(); 3 InputScopeName name = new InputScopeName(); 4 5 name.NameValue = InputScopeNameValue.Number; 6 scope.Names.Add(name); 7 8 txtPhoneNumber.InputScope = scope;
Windows phone8 获取本机 IP 地址:
1 private static string GetIpAddress() 2 { 3 string stripaddress = null; 4 List<string> ipAddresses = new List<string>(); 5 var hostnames = NetworkInformation.GetHostNames(); 6 foreach (var hn in hostnames) 7 { 8 if (hn.IPInformation != null) 9 { 10 string ipAddress = hn.DisplayName; 11 ipAddresses.Add(ipAddress); 12 } 13 } 14 if (ipAddresses.Count < 1) 15 { 16 return null; 17 } 18 if (ipAddresses.Count == 1) 19 { 20 stripaddress = ipAddresses[0]; 21 } 22 if (ipAddresses.Count > 1) 23 { 24 stripaddress = ipAddresses[ipAddresses.Count - 1]; 25 } 26 return stripaddress; 27 }