Zoeken…


DeviceFamily specifieke code

Over het algemeen wordt UWP gebruikt voor het maken van een enkele applicatie die op Windows 10 op veel verschillende apparaten draait. Het is echter ook mogelijk om code op maat van specifieke apparaten te maken. U kunt dit op verschillende manieren bereiken.

Verschillende XAML-indeling

Als u een specifieke lay-out wilt gebruiken voor een bepaalde "apparaatfamilie", kunt u dit doen door een nieuw XAML-pagina-item te maken met dezelfde naam als het standaard XAML-bestand, met een achtervoegsel om de apparaatfamilie aan te geven waarop u zich richt. Dan heb je MainPage.xaml voor alle apparaten en MainPage.DeviceFamily- [specifieke familie] .xaml alleen voor één specifieke familie, die de standaardlay-out overschrijft, zie hieronder:

Afbeelding 1

Als u dit voor veel bestanden wilt doen, kunt u een map maken met de naam DeviceFamily- [specifieke familie] en alle XAML-pagina's erin plaatsen, maar nu met exact dezelfde naam als het standaard XAML-bestand (zie hieronder). In beide voorbeelden delen alle pagina's hetzelfde code-behind-bestand, dus de functionaliteit is identiek, maar de lay-out is afgestemd op specifieke schermformaten.

Afbeelding 2

Code voor specifieke familie

Als u een deel van uw code-behind of uw ViewModel alleen op een specifieke apparaatfamilie wilt uitvoeren, kunt u de eigenschap DeviceFamily van de klasse 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");
}
//....

Download huidige apparaatfamilie

Hier een eenvoudige draagbare manier om de huidige apparaatfamilie te krijgen:

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

Detecteren of een API-contract wordt ondersteund

Afhankelijk van de apparaat- / releaseversie van het systeem is sommige API mogelijk niet beschikbaar. U kunt controleren welk contract wordt ondersteund door ApiInformation.IsApiContractPresent ()

Dit retourneert bijvoorbeeld true op telefoonapparaten en false op andere apparaten

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

Het contract waartoe een API behoort, is onderaan de API-pagina op de MSDN beschikbaar of de globale lijst is beschikbaar op de API-contractpagina .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow