All Posts in 2014.7


How to use Timer on Windows Phone 8.1 (WinRT)

Recently I am rewriting an old App using WinRT, I need to display a clock, but I find there is no Timer control. It looks like I have to implement the Timer myself. I don't use Thread.Sleep because it will block UI thread. I prefer using async await over it. To replace Thread.Sleep, I use Task.Delay:  while (true) { // 要做的操作 await Task.Delay(毫秒); } 为了增加逼格和可重用性,我们需要进一步封装。注意观察本 …


Windows Phone 8.1 DatePicker和TimePicker控件的数据绑定

Windows Phone Runtime 8.1 (WinRT) 自带了DatePicker和TimePicker控件。妈妈再也不用担心我装WPToolkit了。但是和WPToolkit里面的两个Picker不同,WinRT的控件在MVVM模式里做data binding的时候是要爆的。 首先是DatePicker。 具体的情况表现为:ViewModel里的属性是DateTime类型,并且VM正确实现了INotifyPropertyChanged接口,前台直接用Binding语法绑定这个属性,但VM变化,界面不变。界面变化,VM不变。代码看起来就像是这样: Xaml: <DatePicker Date="{Binding SelectedDate, Mode=TwoWay}" /> ViewModel: private DateTime _ …


Portable Class Library中如何调用WCF OData Service

上个月发布了一个WP8.1应用:NuGet Search,并在GitHub开了源:https://github.com/EdiWang/WP-NuGetSearch NuGet的服务接口是个WCF OData Service,为了装逼,我尝试使用了跨Framework的PCI工程,结果no zuo no die了。和一般.NET类库不同,PCL有些tricky的地方要爆。下面是开荒成功的代码: public async Task<Response<IEnumerable<V2FeedPackage>>> GetDataAsync(string searchTerm, int pageIndex, bool includePreRelease = false) { try { IDictionary& …


我在《上海轨道交通》中是如何解决Windows Phone拼音分组bug的

我的App《上海轨道交通》有个很坑的bug,按拼音首字母分组的站点列表会出现分组错误的情况,比如“莘庄”应该在X下,而WP的SortedLocaleGrouping居然把它分在了S下。这是因为“莘庄”的“莘”是多音字。同理,应该在C下的“长江南路”也到了“Z”下。类似的还有: 分组的代码用的是MSDN的范例改的:http://msdn.microsoft.com/library/windows/apps/jj244365(v=vs.105).aspx 这个范例对于英文来说是没问题的,中文就会出现多音字的问题。 为了解决这个坑爹问题,我写了个PinYinGroupResolver,用的时候可以写出很装逼的代码,比如这样: GroupedStations …


Run Scheduled Tasks in ASP.NET Application

在ASP.NET里运行定时任务,这是个老生常谈的话题了,撇开那些用per request搞定屌丝办法,目前最好的解决办法只有2种: 1. 如果你有大微软的Azure,可以直接在网站服务中找到Jobs,自己看一下就会了 2. 如果你是屌丝,买不起Azure,就用本文介绍的WebBackgrounder搞 由于ASP.NET是服务器端Web框架,所以一般而言,一个操作的往往是只有收到客户端Request之后才能执行的,如果网站一直没人访问,没有Request进来,如何执行代码呢?定时任务就是这种坑爹场景。 还好,大微软的MVC帝、ASP.NET小王子haacked蜀黍给我们写了个 http://www.nuget.org/packages/WebBackgrounder/ 专门捣鼓这种场景。作为一个屌丝程序猿,和大牛的区别就在于“好编程,不求甚解& …


不用Start8,不花一分钱,手把手教你3分钟打造Win8.1开始菜单

从Win8出来开始,许多人包括我,都非常反感它去掉了开始菜单。虽然在8.1里加上了开始按钮,但那个按钮只是个开始屏幕的快捷方式,根本就是换汤不换药。更可恨的是,大微软说好今年要给8.1用户带来开始菜单的,结果跳票了。 从Win8起,微软就间接养活了一帮做三方开始菜单的公司,国外的比如Start8,是收费的。Classic Shell倒是免费的。国内的360垃圾助手也有类似的功能。但是他们都有个共同的缺点:禁用了开始按钮原本的功能,并且容易导致explorer.exe崩溃。 有没有办法不花一分钱,不影响开始按钮原有功能,在几分钟内就搞个开始菜单的替代品呢?可以!这是我最终捣鼓后的效果: 有的少年就要“恍然大悟”了,这不就是在任务栏新建了一个指向程序文件夹的工具栏么?喝喝,拿样锁定任务栏后会有问题的,不幸你们自己试试,锁定后Programs右边会出来半个文件夹 …