Suche…


DeviceFamily-spezifischer Code

Im Allgemeinen wird UWP zum Erstellen einer einzelnen Anwendung verwendet, die unter Windows 10 auf vielen verschiedenen Geräten ausgeführt wird. Es ist jedoch auch möglich, Code an bestimmte Geräte anzupassen. Sie können dies auf verschiedene Arten erreichen.

Unterschiedliches XAML-Layout

Wenn Sie ein bestimmtes Layout für eine bestimmte "Gerätefamilie" verwenden möchten, können Sie dies tun, indem Sie ein neues XAML-Seitenelement mit demselben Namen wie die Standard-XAML-Datei erstellen und ein Suffix angeben, um die Zielgerätefamilie anzugeben. Dann haben Sie MainPage.xaml für alle Geräte und MainPage.DeviceFamily- [spezifische Familie] .xaml nur für eine bestimmte Familie, die das Standardlayout überschreibt, siehe unten:

Bild 1

Wenn Sie dies für viele Dateien tun möchten, können Sie einen Ordner mit dem Namen DeviceFamily- [spezifische Familie] erstellen und alle XAML-Seiten darin einfügen , aber jetzt mit genau demselben Namen wie die Standard-XAML-Datei (siehe unten). In beiden Beispielen teilen alle Seiten die gleiche Code-Behind-Datei, sodass die Funktionalität identisch ist, das Layout jedoch auf bestimmte Bildschirmgrößen zugeschnitten ist.

Bild 2

Code für eine bestimmte Familie

Wenn Sie einen Teil Ihres Code- DeviceFamily oder ViewModel nur für eine bestimmte Gerätefamilie DeviceFamily , können Sie die DeviceFamily Eigenschaft der AnalyticsVersionInfo Klasse verwenden.

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");
}
//....

Aktuelle Gerätefamilie abrufen

Hier eine einfache tragbare Möglichkeit, die aktuelle Gerätefamilie zu erhalten:

/// <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;
        }
    }
}

Ermitteln Sie, ob ein API-Vertrag unterstützt wird

Abhängig von der Geräte- / Release-Version des Systems ist möglicherweise keine API verfügbar. Sie können prüfen, welcher Vertrag unterstützt wird, indem Sie ApiInformation.IsApiContractPresent () verwenden.

Zum Beispiel wird dies auf Telefongeräten den Wert true und auf den anderen Geräten false zurückgeben

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

Der Vertrag, zu dem eine API gehört, ist unten auf der API-Seite der MSDN oder der globalen Liste auf der API-Vertragsseite verfügbar.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow