写一个判断操作系统的工具类OSHelper.cs

public class OSHelper
{
// 获取操作系统ID
public static System.PlatformID GetPlatformID()
{
//获取系统信息
System.OperatingSystem osInfo = System.Environment.OSVersion; //获取操作系统ID
System.PlatformID platformID = osInfo.Platform; return platformID;
} // 获取主版本号
public static int GetVersionMajor()
{
//获取系统信息
System.OperatingSystem osInfo = System.Environment.OSVersion; //获取主版本号
int versionMajor = osInfo.Version.Major; return versionMajor;
} // 获取副版本号
public static int GetVersionMinor()
{
//获取系统信息
System.OperatingSystem osInfo = System.Environment.OSVersion; //获取副版本号
int versionMinor = osInfo.Version.Minor; return versionMinor;
} //C#判断操作系统是否为Windows98
public static bool IsWindows98
{
get
{
return (Environment.OSVersion.Platform == PlatformID.Win32Windows) && (Environment.OSVersion.Version.Minor == 10) && (Environment.OSVersion.Version.Revision.ToString() != "2222A");
}
}
//C#判断操作系统是否为Windows98第二版
public static bool IsWindows98Second
{
get
{
return (Environment.OSVersion.Platform == PlatformID.Win32Windows) && (Environment.OSVersion.Version.Minor == 10) && (Environment.OSVersion.Version.Revision.ToString() == "2222A");
}
}
//C#判断操作系统是否为Windows2000
public static bool IsWindows2000
{
get
{
return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 0);
}
}
//C#判断操作系统是否为WindowsXP
public static bool IsWindowsXP
{
get
{
return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 1);
}
}
//C#判断操作系统是否为Windows2003
public static bool IsWindows2003
{
get
{
return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 2);
}
}
//C#判断操作系统是否为WindowsVista
public static bool IsWindowsVista
{
get
{
return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 0);
}
}
//C#判断操作系统是否为Windows7
public static bool IsWindows7
{
get
{
return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 1);
}
}
//C#判断操作系统是否为Unix
public static bool IsUnix
{
get
{
return Environment.OSVersion.Platform == PlatformID.Unix;
}
}
//利用C#判断当前操作系统是否为Win8系统
public static bool IsWindows8()
{
Version currentVersion = Environment.OSVersion.Version;
Version compareToVersion = new Version("6.2");
if (currentVersion.CompareTo(compareToVersion) >= 0)
return true;
else
return false;
} }

问题来源:
做WPF的时候,发现部分UI在不同操作系统下的表现不一致,例如ListBox中的元素Item在Win10中水平间距自动平均分的,即指定了Item的宽高,但不指定Margin,会自动计算出Margin以平均间距,但是在Win8中不会如此,即所有Item靠左对齐,导致右边有一段空白。所以需要根据不同OS做UI的适配。

根据这一问题,解决办法是在XAML中ListBox使用< ListBox.ItemTemplate >< DataTemplate >,然后将Margin=”{Binding Margin}”使用MVVM绑定界面属性到ViewModel中,然后给ItemsSource绑定的列表中的实体类新增这个Margin属性(类型最好是Thickness,如果只有一个值也可以是int)。


重要的参考:

http://blog.csdn.net/yl2isoft/article/details/17336329
https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms724834(v=vs.85).aspx

【转】【C#】判断当前操作系统的更多相关文章

  1. JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面

    JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html function is_weixin() { v ...

  2. js 判断当前操作系统是ios还是android还是电脑端

    js判断客户端是否是IOS或者是Android //如果返回true 则说明是Android function is_weixin() { var ua = window.navigator.user ...

  3. JS判断浏览器类型,JS判断客户端操作系统

    JS判断浏览器类型 function judge(){ var browser = { versions: function() { var u = navigator.userAgent, app ...

  4. 移动端:判断是否微信端、判断手机操作系统(ios或android)

    http://caibaojian.com/browser-ios-or-android.htmlfunction is_weixin() { var ua = window.navigator.us ...

  5. JS判断访问设备(userAgent)加载不同页面 JS判断客户端操作系统类型(platform)

    //平台.设备和操作系统 var system ={ win : false, mac : false, xll : false }; //检测平台 var p = navigator.platfor ...

  6. PHP判断用户操作系统(Android,ipad,iphone,windows)

    这段脚本可以运用在:针对不同的操作系统,把用户引导向相应的网站或做相应的处理. <?php // PHP 判断客户端平台(PC.安卓.iPhone.平板) // strpos() 函数返回字符串 ...

  7. 判断windows操作系统平台

    判断当前Windows系统是win2000,winXP,winVista,win2003,win7... private static IntPtr GetSysTrayWnd() { IntPtr ...

  8. js 判断当前操作系统 ios, android, 电脑端

    一 .   js判断移动端的操作系统(ios或Android) $(function () { var u = navigator.userAgent; var isAndroid = u.index ...

  9. centos8环境判断当前操作系统是否虚拟机或容器

    一,阿里云ECS的centos环境 1,执行systemd-detect-virt [root@yjweb ~]# systemd-detect-virt kvm 说明阿里云的ecs是在一个kvm环境 ...

随机推荐

  1. HTML5动感圆圈

    概述 利用HTML5 Canvas实现的炫酷动感的圆圈动画. 详细 代码下载:http://www.demodashi.com/demo/10419.html 一.准备工作 本demo使用HTML5进 ...

  2. PHP扩展的基本结构

    1.下载php源码 git clone https://github.com/php/php-src.git  2,创建扩展 cd php-src/ext/ ./ext_skel --extname= ...

  3. maven 发布到仓库

    到nexus中看到的仓库地址 <distributionManagement> <repository> <id>releases</id> <n ...

  4. poj----Maximum sum(poj 2479)

    Maximum sum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30704   Accepted: 9408 Desc ...

  5. 仿京东左侧菜单 hover效果-简易demo

    简单描述: 用到的知识点 css 中的绝对定位 以及 Js 中的事件冒泡(或事件委托) .cont{display:inline-block;width:200px;height:200px;bord ...

  6. Linux内核(15) - 方法论

    什么是方法论 方法论给人的第一感觉就是它是一个玄之又玄的很朦胧的东西,显然,学习本身就是一件很玄乎的事情,有些人整天潇潇洒洒没见怎么用心就能够获得很好的成绩,而有些人则相反,投悬梁锥刺骨也还是成绩平平 ...

  7. [转]四种π型RC滤波电路

    1.典型π型RC滤波电路    图7-27所示是典型的兀型RC滤波电路.电路中的Cl.C2是两只滤波电容,Rl是滤波电阻,Cl.Rl和C2构成一节π型RC滤波电路.由于这种滤波电路的形式如同字母π且采 ...

  8. MAR 27 解决华为手机访问Google Play:从服务器检索信息时出错。[DF-DFERH-01]

    虽然路由器已经设置了梯子,但是用华为手机访问Google Play时,还是提示:从服务器检索信息时出错.[DF-DFERH-01].   虽然在手机上把梯子设置成全局模式,连接Google Play后 ...

  9. 转 MySQL中的共享锁与排他锁

    原文链接在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念.使 ...

  10. python标准库介绍——10 sys 模块详解

    ==sys 模块== ``sys`` 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. === 处理命令行参数=== 在解释器启动后, ``argv`` 列表包含了传递给脚本的所有 ...