2015-06-09 117 views

回答

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; 
    } 
+0

我不知道但是..我很确定应该有更好的方法。 –

+0

是的。应该。这是我发现的唯一功能解决方案 – ventura8

+0

不幸的是,它不适用于Windows 10 ... –

3

我想你可以尝试使用EasClientDeviceInformation类知道:

EasClientDeviceInformation info = new EasClientDeviceInformation(); 
string system = info.OperatingSystem; 

在WP应该在桌面上返回WindowsPhoneWindows

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,RelativePanels等)重新调整窗口大小的UI,以便同一应用可以提供不同但适当的视图,取决于屏幕的大小,无论应用运行在哪个设备上。

查看Build session Design: UX Patterns and Responsive Techniques for Universal Windows Apps了解更多详情。

相关问题