Windows
12/30/2015 6:34:38 AM
我的《上海轨道交通》应用里有个允许用户报告错误的页面,会把当前视图(xaml页面名称)、页面摘要、用户反馈的内容以及设备的软硬件信息生成邮件发给应用作者,界面如下: 生成的邮件如下: 问题描述:测试 (程序版本:3.2.0.0, 所在页面:StationDetail, 页面摘要:宜山路, 设备名:ISAAC, 操作系统:WINDOWS, SKU:Surface_Pro_3, 产品名称:Surface Pro 3, 制造商:Microsoft Corporation, 固件版本:, 硬件版本:) 要实现这样的报错页面非常容易 1.获取软硬件信息 我们要用的类是: Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation 比如获得设备名称,就可以直接: var deviceInfo = new …
12/24/2015 3:08:45 AM
我们在设计APP的时候,可能会考虑到不同国家和地区的用户使用,并在界面里针对不同的语言写资源文件做本地化。但是,如何让你的APP名称也本地化?比如在简体中文的系统上显示在程序列表里的是“调色板”,而在英文系统上显示的是“Color Palette”。 做法很简单,首先,和通常做本地化一样,你得有个"Strings\语言\Resources.resw"的文件夹结构。比如简体中文用的是“zh-CN”,美国英语是“en-US” 然后分别在resw文件里加一个key,比如AppName,然后针对不同语言填写不同的名称。这里简体中文是“调色板”,英语是“Color Palette” 最后这部最关键,打开你的Package.appxmanifest文件,把Display Name改成: ms-resource:AppName 现在,部署你的APP,就能看到不同的结果了。 补充:如果要让应用商店根 …
12/22/2015 1:20:49 AM
My UWP application "Shanghai Metro" has an option to allow user save the metro graph to local file system. The image file is located under project directory, "Assets\shanghaimetro-xl.jpg", and will ask the user to choose a location when saving the image. This is a very common functionality, it's also easy to achieve in UWP applications. The most easy way to do it is to use my library "Edi.UWP. …
11/24/2015 6:10:00 AM
今天在爆UWP的定时后台任务,坑有点多,爆出屎来了。有的坑在很多网上的文章里都没提到,非常的坑。刚刚开荒成功了,把经验写出来分享: 1. 写一个后台任务的类,继承IBackgroundTask接口 通常,在设计应用程序结构的时候,我们会建类库项目(Class Library)放这些类。比如 FarkBackgroundTask.Core 因为是UWP工程,所以建的类库也要是Universal Windows的。注意,这里我们已经埋下了一个巨坑,稍后会解释。 我们的类代码如下: public class SayFarkTask : IBackgroundTask { public void Run(IBackgroundTaskInstance taskInstance) { Debug.Write("================ Fark the …
11/8/2015 4:17:38 AM
在UWP的App中,弹出消息通知的方法和WinRT一致,注意是App内的消息通知(toast notification)而不是从服务器端推送的通知。主要有几个步骤: 1. 创建XML定义 // 1. create element ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01; XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); 这里面的消息模板有好几种: // // Summary: // 指定要在消息通知中使用的模版。 [ContractVersion(typeof(UniversalApiContract), 65536)] public enum …
11/3/2015 12:52:36 PM
UWP的Pivot控件动画效果和以前Windows 8, Windows Phone 8的Pivot不一样,在切换PivotItem的时候,当前选择的Item的Header并不会跑到第一个去,而是单纯的像Tab选项卡那样高亮当前的Tab而已。 我个人喜欢Windows 8的Pivot,即下面这个GIF这样的(这是我正在开发的一个UWP应用)。如果你也喜欢传统风格的Pivot,可以参考以下方法。 实现方法特别简单,只要拿Blend从WP8.1 Runtime的Pivot里把默认样式导出来,稍微改下就行: 把这个style塞在App.xaml的Resources下面就可以全局使用了。 我改了这么几个地方: 一个是所有的PhoneOOXXBrush,我都换成了对应的UWP的Bursh比如PivotForegroundThemeBrush不然运行时候直接爆炸。 另一个是 给 …
10/8/2015 11:00:04 AM
UWP和WPF以及以前Windows 8.1的WinRT应用有些不一样的地方。首先就是标题栏,以前Windows 8.1的应用都是全屏的,没有标题栏,Windows 10里面应用可以窗口化运行,所以我们也能够利用标题栏做一些定制。本文针对初学者,可能写的比较啰嗦。 一、首先是最基本的,如何改变标题栏及按钮的颜色 标题栏的对象位于Windows.UI.ViewManagement.ApplicationView类里,有个属性是 public ApplicationViewTitleBar TitleBar { get; } 为了能够访问这个属性,我们需要先取得当前应用窗口的view: var view = ApplicationView.GetForCurrentView(); 拿到view对象后,就能对TitleBar属性操作了,标题栏的活动和非活动状态的前景色和背景色可以这样设置, …
10/23/2013 5:12:22 PM
从Windows Vista开始,为了防止操作系统被恶意软件菊爆,Windows加入了UAC机制,在没有关闭UAC的时候,用户的程序都没有管理员权限去执行。但是如果软件需要做一些操作,比如读写注册表,就需要以管理员身份启动。然而普通用户并不清楚这一点,这有可能导致我们的程序被差评,如果是个妹子,发现你的软件不能用,那你连好人卡都收不到了。 幸好,用.NET开发的程序可以很方便的做到自动要求以管理员身份运行。 首先为了达到演示效果,我需要在程序界面上通知当前环境是不是以管理员身份运行,为此我找了一个UACHelper,这个东西挺实用的,就算不是以管理员身份运行的,也不会在用户面前直接爆掉。 public static class UacHelper { private const string uacRegistryKey = "Software\\Microsoft\\ …
6/7/2013 4:39:39 AM
PowerShell是个很牛逼的命令行工具,在Windows 7以后的系统里都默认自带。学会了PowerShell就可以提升逼格,让妹子崇拜。今天就教大家用PowerShell操作Windows的Event Log。 首先,启动PowerShell很简单,只需要在开始菜单里输入Power,就能找到了(Windows 8用户可以直接在开始屏幕里搜索Power)。 启动PowerShell后,你可以看到一个这样的界面。和CMD不同,它是深蓝色背景的,并且路径前多了PS前缀。看起来很厉害的样子: 有用程序写过Windows Event Log的童鞋都知道,我们的首要任务是创建一个Log和一个Source。PowerShell里语法如下: new-eventlog -LogName 日志名称 -Source 源名称 比如,我们创建一个Name为Game,Source为CS的Log,可以这样写: …
4/15/2013 2:11:26 PM
最近蛋疼,所以废话不多,直接切入正题。首先这次要说的是Surface RT,是RT版的,ARM处理器的,别弄错了。我们要做的是把工作机上写好的程序放在Surface RT远程调试,而不是在本机和模拟器中运行。 第一步,在Surface RT上安装微软官方的debugger:http://go.microsoft.com/?linkid=9810474 这个debugger是桌面环境下运行的,安装的时候需要管理员权限。 装完以后,开始屏幕上会出现这两个图标,我们要用的是第一个:Remote Debugger。 启动Remote Debugger,正常情况会让你配一些Windows防火墙,你可以完全按照向导来,最终会出现一个Monitor对话框,证明debugger已经在监听连接了。 接下来有个比较有技巧的地方,如果你的Surface RT上的当前用户和开发程序的机器的登录帐户不一样,建 …
Edi Wang
.NET and Azure Developer