2015-06-09 131 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瞭解更多詳情。

相關問題