uwp
Gerätefamilien
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:
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.
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.