Szukaj…


Kod specyficzny dla DeviceFamily

Ogólnie UWP służy do tworzenia pojedynczej aplikacji działającej w systemie Windows 10 na wielu różnych urządzeniach. Możliwe jest jednak także dostosowanie kodu do konkretnych urządzeń. Możesz to osiągnąć na kilka różnych sposobów.

Inny układ XAML

Jeśli chcesz użyć określonego układu dla określonej „rodziny urządzeń”, możesz to zrobić, tworząc nowy element strony XAML o tej samej nazwie co domyślny plik XAML, z przyrostkiem wskazującym rodzinę urządzeń, na którą celujesz. Następnie będziesz mieć MainPage.xaml dla wszystkich urządzeń i MainPage.DeviceFamily- [konkretna rodzina] .xaml tylko dla jednej konkretnej rodziny, która zastąpi domyślny układ, patrz poniżej:

Zdjęcie 1

Jeśli chcesz to zrobić dla wielu plików, możesz utworzyć folder o nazwie DeviceFamily- [konkretna rodzina] i umieścić w nim wszystkie strony XAML, ale teraz o dokładnie takiej samej nazwie jak domyślny plik XAML (patrz poniżej). W obu przykładach wszystkie strony miałyby ten sam plik za kodem, więc funkcjonalność jest identyczna, ale układ jest dostosowany do określonych rozmiarów ekranu.

Zdjęcie 2

Kod dla konkretnej rodziny

Jeśli chcesz uruchomić część kodu lub ViewModel tylko na określonej rodzinie urządzeń, możesz użyć właściwości DeviceFamily z klasy 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");
}
//....

Pobierz aktualną rodzinę urządzeń

Oto prosty przenośny sposób na uzyskanie obecnej rodziny urządzeń:

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

Wykryj, czy obsługiwana jest umowa API

W zależności od wersji urządzenia / wydania systemu niektóre interfejsy API mogą być niedostępne. Możesz sprawdzić, która umowa jest obsługiwana za pomocą ApiInformation.IsApiContractPresent ()

Na przykład zwróci wartość true na urządzeniach telefonicznych i false na pozostałych

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

Umowa, do której należy interfejs API, jest dostępna u dołu strony interfejsu API w witrynie MSDN lub globalna lista jest dostępna na stronie umowy interfejsu API .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow