Buscar..


Código específico de DeviceFamily

En general, UWP se usa para hacer una sola aplicación que se ejecuta en Windows 10 en muchos dispositivos diferentes. Sin embargo, también es posible hacer un código adaptado a dispositivos específicos. Puedes lograr esto de varias maneras diferentes.

Disposición diferente de XAML

Si desea utilizar un diseño específico para una determinada "familia de dispositivos", puede hacerlo creando un nuevo elemento de página XAML con el mismo nombre que el archivo XAML predeterminado, con un sufijo para indicar la familia de dispositivos a la que se dirige. Luego tendrá MainPage.xaml para todos los dispositivos y MainPage.DeviceFamily- [familia específica] .xaml solo para una familia específica, que sobrescribirá el diseño predeterminado, vea a continuación:

Imagen 1

Si desea hacer esto con muchos archivos, puede crear una carpeta con el nombre DeviceFamily- [familia específica] y poner todas las páginas XAML en ella, pero ahora con exactamente el mismo nombre que el archivo XAML predeterminado (ver más abajo). En ambos ejemplos, todas las páginas compartirían el mismo archivo de código subyacente, por lo que la funcionalidad es idéntica, pero el diseño se adapta a tamaños de pantalla específicos.

Imagen 2

Código para familia específica

Si desea ejecutar parte de su código subyacente o su ViewModel solo en una familia de dispositivos específica, puede usar la propiedad DeviceFamily de la clase 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");
}
//....

Obtener familia de dispositivos actual

Aquí una forma sencilla y portátil de obtener la familia de dispositivos actual:

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

Detectar si un contrato de API es compatible

Dependiendo de la versión de dispositivo / versión del sistema, algunas API pueden no estar disponibles. Puede verificar qué contrato es compatible usando ApiInformation.IsApiContractPresent ()

Por ejemplo, esto devolverá verdadero en los dispositivos del teléfono y falso en los demás.

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

El contrato al que pertenece una API está disponible en la parte inferior de la página de API en MSDN o la lista global está disponible en la página de contrato de API .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow