如何检查Windows设备是手机还是平板电脑?

时间:2015-06-09 09:09:31

标签: c# windows windows-runtime windows-phone-8.1

如何检查Windows设备是手机还是平板电脑/ PC?我需要知道为xaml元素使用不同的大小

3 个答案:

答案 0 :(得分:3)

我认为您可以尝试使用EasClientDeviceInformation类:

EasClientDeviceInformation info = new EasClientDeviceInformation();
string system = info.OperatingSystem;
在WP上

它应该在桌面上返回WindowsPhoneWindows

答案 1 :(得分:2)

根据手机或平板电脑的不同,你不应该使用不同大小的Xaml。您应该根据屏幕的大小和分辨率使用不同的Xaml。

在Windows 8.1上有足够的Xaml差异,你可能需要为手机和PC /平板电脑做不同的事情,但在这种情况下,你通常会为这两个项目使用不同的Xaml文件。您还可以使用具有电话和PC / Tablet特定样式的资源字典的两个版本,并将它们放置在特定于平台的项目中,以便在每个设备上获得不同的行为。

如果你真的想从代码中知道这一点,在8.1上你总是使用不同的二进制文件用于手机和平板电脑:你可以用编译时常量编译它:

bool IsAPhone()
{
#if WINDOWS_PHONE_APP
    return true;
#else
    return false;
#endif
}

在Windows 10上,您将同时使用相同的二进制文件和相同的Xaml API,同一设备可能同时显示在小型(手机)屏幕和大型屏幕上。

虽然您仍然可以使用单独的Xaml文件来为不同的设备定制UI,但您也可以使用响应技术(Visual States和AdaptiveTriggers,RelativePanel等)来重排窗口大小的UI,以便相同的应用程序可以提供不同的但适当的视图取决于屏幕的大小,无论应用程序运行的设备如何。

有关详细信息,请查看构建会话Design: UX Patterns and Responsive Techniques for Universal Windows Apps

答案 2 :(得分:1)

    public static bool DeviceIsPhone()
    {
        Type StatusBarType = Type.GetType("Windows.UI.ViewManagement.StatusBar, Windows, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null, ContentType=WindowsRuntime");
        if (StatusBarType != null)
            return true;
        return false;
    }