Ricerca…


Codice specifico DeviceFamily

In generale, UWP viene utilizzato per creare una singola applicazione che gira su Windows 10 su molti dispositivi diversi. Tuttavia, è anche possibile creare codice su misura per dispositivi specifici. È possibile ottenere questo in molti modi diversi.

Layout XAML diverso

Se si desidera utilizzare un layout specifico per una determinata "famiglia di dispositivi", è possibile farlo creando una nuova voce XAML con lo stesso nome del file XAML predefinito, con un suffisso per indicare la famiglia di dispositivi target. Quindi avrai MainPage.xaml per tutti i dispositivi e MainPage.DeviceFamily- [famiglia specifica] .xaml solo per una famiglia specifica, che sovrascriverà il layout predefinito, vedi sotto:

Immagine 1

Se si desidera eseguire questa operazione per molti file, è possibile creare una cartella con nome DeviceFamily- [famiglia specifica] e inserirvi tutte le pagine XAML, ma ora con esattamente lo stesso nome del file XAML predefinito (vedere di seguito). In entrambi gli esempi, tutte le pagine condividono lo stesso file code-behind, quindi la funzionalità è identica, ma il layout è adattato a dimensioni dello schermo specifiche.

Immagine 2

Codice per famiglia specifica

Se si desidera eseguire parte del codice code o di ViewModel solo su una specifica famiglia di dispositivi, è possibile utilizzare la proprietà DeviceFamily dalla classe AnalyticsVersionInfo .

AnalyticsVersionInfo avi = AnalyticsInfo.VersionInfo;
var deviceFamily = avi.DeviceFamily;

if(deviceFamily == "Windows.Mobile")
{
   Console.WriteLine("You're on mobile device right now.");
}
else if(deviceFamily == "Windows.Desktop")
{
   Console.WriteLine("You're on desktop");
}
else if(deviceFamily == "Windows.IoT")
{
   Console.WriteLine("You're on IoT");
}
//....

Ottieni la famiglia di dispositivi attuale

Ecco un semplice modo portatile per ottenere la famiglia di dispositivi corrente:

/// <summary>
/// All the device families 
/// </summary>
public enum DeviceFamily
{
    Desktop,
    Mobile,
    Iot,
    Xbox,
}

/// <summary>
/// The helper to get the current device family
/// </summary>
public static class DeviceFamilyHelper
{
    /// <summary>
    /// Return the family of the current device
    /// </summary>
    /// <returns>the family of the current device</returns>
    public static DeviceFamily GetDeviceFamily()
    {
        switch(ResourceContext.GetForCurrentView().QualifierValues["DeviceFamily"].ToLowerInvariant())
        {
            case "mobile":  return DeviceFamily.Mobile;    
            case "xbox":    return DeviceFamily.Xbox;
            case "iot":     return DeviceFamily.Iot;
            default:        return DeviceFamily.Desktop;
        }
    }
}

Rileva se è supportato un contratto API

A seconda della versione del dispositivo / versione del sistema, alcune API potrebbero non essere disponibili. Puoi verificare quale contratto è supportato usando ApiInformation.IsApiContractPresent ()

Ad esempio, questo restituirà true sui dispositivi del telefono e falso sugli altri

ApiInformation.IsApiContractPresent(typeof(CallsPhoneContract).FullName, 1)

Il contratto a cui appartiene un'API è disponibile nella parte inferiore della pagina API su MSDN o l'elenco globale è disponibile dalla pagina del contratto API .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow