uwp
Apparaatfamilies
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:
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.
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 .