サーチ…
DeviceFamily固有のコード
一般に、UWPはWindows 10上で実行される単一のアプリケーションをさまざまなデバイスに作成するために使用されます。ただし、特定のデバイスに合わせてコードを作成することもできます。これを達成するには、いくつかの方法があります。
異なるXAMLレイアウト
特定の「デバイスファミリ」に対して特定のレイアウトを使用する場合は、デフォルトのXAMLファイルと同じ名前の新しいXAMLページアイテムを作成し、ターゲットしているデバイスファミリを示す接尾辞を付けます。次に、すべてのデバイス用にMainPage.xamlを、 特定のファミリ用にMainPage.DeviceFamily- [特定のファミリ] .xamlを作成します。これはデフォルトのレイアウトを上書きします。以下を参照してください。
たくさんのファイルに対してこれを行うには、 DeviceFamily- [特定のファミリ]という名前のフォルダを作成し、その中にすべてのXAMLページを置くことができますが、デフォルトのXAMLファイルと同じ名前になります(下記参照)。両方の例では、すべてのページが同じコードビハインドファイルを共有するため、機能は同じですが、レイアウトは特定の画面サイズに合わせて調整されています。
特定の家族のためのコード
コードビハインドの一部またはViewModelを特定のデバイスファミリのみで実行する場合は、 AnalyticsVersionInfo
クラスのDeviceFamily
プロパティを使用できます。
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");
}
//....
現在のデバイスファミリを入手する
現在のデバイスファミリを入手する簡単なポータブルな方法:
/// <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;
}
}
}
API契約がサポートされているかどうかを検出する
システムのデバイス/リリースのバージョンによっては、一部のAPIが利用できない場合があります。 ApiInformation.IsApiContractPresent()を使用すると、サポートされている契約を確認できます。
たとえば、これは電話機ではtrue、それ以外の場合はfalseを返します
ApiInformation.IsApiContractPresent(typeof(CallsPhoneContract).FullName, 1)
APIが所属する契約は、MSDNのAPIページの一番下に表示されます 。また、グローバル契約リストはAPI契約ページから入手できます 。