UWP平台支持使用Windows系统自带的Data Protection功能进行数据加密,密钥由操作系统进行管理,开发者无需考虑密钥的生成和分发问题。该功能可以将数据加密为只有特定用户才能解密的密文。
继续阅读“利用UWP数据保护功能加密字符串”
替代lock语句块实现await独占访问
C#中有lock语句块和Monitor类可以实现线程锁,实现对资源的独占访问。但是,当像下面这样试图在lock语句块中使用await时会出现错误,无法生成:
lock (streamReader)
{
await streamReader.ReadLineAsync();
} //编译错误
此时,也不能自作聪明地使用Monitor类实现线程锁,那样虽然能够生成,但是执行结果与你设想的是不同的。像下面这样的代码并不能实现独占访问:
Monitor.Enter(streamReader);
await streamReader.ReadLineAsync();
Monitor.Exit(streamReader); //不能实现功能
UWP后退功能处理
UWP后退功能处理有三个要点:一是响应系统后退键,二是在桌面系统上显示后退键,三是在全平台上实现后退时的确认。 继续阅读“UWP后退功能处理”
UWP控件如何锁定长宽比
在UWP界面设计的过程中,有时候我们需要锁定一些控件的长宽比,但又需要自动调整控件的大小。控件并没有直接实现锁定长宽比的功能,但只需要简单的代码即可实现自动缩放的情况下锁定长宽比。 继续阅读“UWP控件如何锁定长宽比”
在WebView和HttpClient之间共享Cookies(UWP和Xamarin)
本文讨论UWP和Xamarin上面各种WebVeiw和各种HttpClient的Cookies问题。
UWP Application类解析
每一个C# UWP应用中,必不可少的一个文件就是App.xaml.cs。App类是整个程序的入口,它继承了Application类。在App.xaml.cs中,我们可以通过重写Application类中的一些函数,来自定义程序启动时的行为。
在默认UWP模板中,OnLaunched函数担任了初始化程序窗口的工作。但实际上,一个UWP应用的生命周期中,OnLaunched函数可能被调用任意次(包括0次或者很多次)。所以,在初始化程序窗口的时候,必须考虑重复初始化的问题。新手很容易犯的一个错误是在OnLaunched函数中绑定OnBackRequested函数,这样会导致在某些情况下,按一次后退键后退多个页面,或是在某些情况下后退键无效的问题。
如何判断UWP应用是否具有焦点
桌面版本Windows中,一个UWP应用只有在被最小化的时候才会引发Suspending事件,在使用了扩展执行(Extended Execution)(参见使用扩展执行最小化运行)的情况下,更是不知什么时候才会引发Suspending事件了。手机系统中,Suspending同样不能代表应用不具有焦点。所以,使用Suspending和Resuming事件判断应用是否具有焦点是不可行的。