面向22世纪的现代化应用程序可以同时在多种设备上运行,于是有朋友会有一个疑问:有时候,我们还真的需要判断一下,UAP应用程序在哪个平台上运行。尽管大多情况下我们不必要这样做,但某些特殊情况还得考虑。比如一串数据列表,我希望如果在桌面上运行时就以横向列表展现;但要是运行在手机上就以纵向列表展现。

也就是说,其实我们只需分析两种情况即可:

一、桌面。(台式机、笔记本、平板、游戏机、发广告专用机、导航器……)

二、移动环境。其实就是手机。

那么,有啥办法可判断呢?勿急,老周先告诉你,方法比较简单。咱们先看一段代码:

            var context = ResourceContext.GetForCurrentView();string s = string.Empty;foreach (var item in context.QualifierValues){s += item.Key + " : " + item.Value;s += "\n";}tb.Text = s;

ResourceContext类在Windows.ApplicationModel.Resources.Core命名空间下,就是用于访问与当前应用程序的限定资源的API,也可以把这个“资源”理解为应用程序的一些配置信息,如什么语言的,日语的还中文的;什么主题基调的,浅色还是深色;什么比例的,缩放100%还是180%……

调用ResourceContext.GetForCurrentView()方法可以直接得到ResourceContext实例,再通过QualifierValues属性得到一个字典数据:Key为字符串,Value也是字符串。QualifierValues属性表示该资源的限定符集合。

悟性高的朋友可能已经猜到其中的玄机了,不过猜不到也不用急,现在我们用上面的代码做两件事,做完这两件事你就会明白了。

第一件事,在本地计算机和平板模拟器上运行应用,然后得到如下图的结果:

第二件事,在手机模拟器上运行一下,得到结果如下:

不知道你看懂了没,如果还没有看出其中的奥妙,那老周就揭晓了:在资源限定符字典中,有一条记录的Key为DeviceFamily,如果在桌面上运行的话,它的Value就是Desktop;如果在手机上运行,Value就是Mobile。

怎么样,现在懂了吧?

那么,你猜猜,如果判断UAP正在运行的设备,该想到方法了吧。

老周给出个例子,界面上有个StackPanel容器,里面放了几块正方形的烧饼。如果在桌面上运行,烧饼就横着放;如果在手机上运行,烧饼就竖着放,以方便用户流口水。

XAML代码如下:

        <StackPanel Margin="15" Name="panel"><Rectangle Margin="14" Width="125" Height="125" Fill="Yellow"/><Rectangle Margin="14" Width="125" Height="125" Fill="Red"/><Rectangle Margin="14" Width="125" Height="125" Fill="Pink"/><Rectangle Margin="14" Width="125" Height="125" Fill="Orange"/></StackPanel>

处理代码如下:

            // 得到资源上下文对象ResourceContext resContext = ResourceContext.GetForCurrentView();// 访问键名为DeviceFamily的值string value = resContext.QualifierValues["DeviceFamily"];// 分析if (value == "Desktop"){panel.Orientation = Orientation.Horizontal;}else{panel.Orientation = Orientation.Vertical;}

OK,首先,在本地计算机上运行一下,结果如下:

接着,在手机模拟器上运行,结果如下:

看来这个DeviceFamily确实很Family。

补充:后来发现,访问Windows.System.Profile.AnalyticsVersionInfo.DeviceFamily属性也可以获得平台名称。

本文例子下载地址:http://files.cnblogs.com/files/tcjiaan/deviceFamilySmp.zip

【Win 10应用开发】如何知道UAP在哪个平台上运行相关推荐

  1. 【Win 10 应用开发】RTM版的UAP项目解剖

    原文:[Win 10 应用开发]RTM版的UAP项目解剖 Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载.正式版的SDK在API结构上和以 ...

  2. 【Win 10 应用开发】Toast通知激活应用——前台后台

    原文:[Win 10 应用开发]Toast通知激活应用--前台&后台 老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎 ...

  3. 【Win 10应用开发】SplitView控件

    [Win 10应用开发]SplitView控件 原文:[Win 10应用开发]SplitView控件 SplitView控件用于呈现分隔视图,简单地说,就是把一个视图分割为两部分,Content属性所 ...

  4. 【Win 10应用开发】Adaptive磁贴模板的XML文档结构

    原文:[Win 10应用开发]Adaptive磁贴模板的XML文档结构 在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴 ...

  5. Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题

    转载:http://blog.csdn.net/iamlazybone/article/details/17191539 懒骨头(http://blog.csdn.net/iamlazybone  Q ...

  6. Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应...

    2019独角兽企业重金招聘Python工程师标准>>> 上节说到cygwin下成功编译出so文件,下面我们要把游戏运行在android上. 开始干活! 其实步骤可以参考 Cocos2 ...

  7. 【Win 10 应用开发】导入.pfx证书

    这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecer ...

  8. 【Win 10 应用开发】在代码中加载文本资源

    记得前一次,老周给大伙,不,小伙伴们介绍了如何填写 .resw 文件,并且在 XAML 中使用 x:Uid 标记来加载.也顺便给大伙儿分析了运行时是如何解析 .resw 文件的. 本来说好了,后续老周 ...

  9. 地平线 旭日X3 SDB开发板 (四) yolov3自训练模型板上运行流程记录

    文章目录 一.准备工作 二.检查模型 三.板上运行 四.参考 一.准备工作 onnx 1.5 Opset version 10 自己训练的darknet模型 yolov3 darknet 转 onnx ...

最新文章

  1. 截断句子取前k个单词
  2. dependent-name ‘xxx::yyy’ is parsed as a non-type, but instantiation yields a type
  3. Hadoop 学习笔记 (十一) MapReduce 求平均成绩
  4. python进程共享全局变量 时延_Python 进程之间共享数据(全局变量)的方法
  5. 201107阶段二Linux-qt编程
  6. echarts解决自适应图表被压缩问题
  7. B-树 B+树复习总结
  8. Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询
  9. 设置html按钮点击事件无效果,css怎么设置按钮不能点击?
  10. input内强制保留小数点后两位 位数不足时自动补0
  11. 【SpringCloud】 spring cloud 2021年 技术 更新换代 停更 等信息
  12. MySQL查询GROUP BY日/月/年
  13. css让div背景变成半透明
  14. 【数据分析】重要环节--缺失值怎么处理
  15. 如何关闭“数据执行保护”?
  16. linux灵活提取ip脚本
  17. ADCIRC模式与Python融合技术应用
  18. 【Python】安装pip
  19. metaball公式_parametric.是什么意思
  20. 沟通CTBS V5.0确保立白集团核心数据万无一失

热门文章

  1. Data truncation: Incorrect string value
  2. TypeScript报错信息表(备注)
  3. 七、BDB JE与BDB Java API
  4. 神经网络和深度神经网络,深度神经网络类型包括
  5. Linux禁止普通用户使用某些命令
  6. 欧洲专线运输方式有哪些?有哪些优势?
  7. linux中安装中文拼音输入法过程
  8. 推荐系统工程实践经验
  9. CP速配app v2.0.8.2
  10. 光伏扶贫项目指标下达 如何严把光伏质量关?