サーチ…


DeviceFamily固有のコード

一般に、UWPはWindows 10上で実行される単一のアプリケーションをさまざまなデバイスに作成するために使用されます。ただし、特定のデバイスに合わせてコードを作成することもできます。これを達成するには、いくつかの方法があります。

異なるXAMLレイアウト

特定の「デバイスファミリ」に対して特定のレイアウトを使用する場合は、デフォルトのXAMLファイルと同じ名前の新しいXAMLページアイテムを作成し、ターゲットしているデバイスファミリを示す接尾辞を付けます。次に、すべてのデバイス用にMainPage.xamlを、 特定のファミリ用にMainPage.DeviceFamily- [特定のファミリ] .xamlを作成します。これはデフォルトのレイアウトを上書きします。以下を参照してください。

画像1

たくさんのファイルに対してこれを行うには、 DeviceFamily- [特定のファミリ]という名前のフォルダを作成し、その中にすべてのXAMLページを置くことができますが、デフォルトのXAMLファイルと同じ名前になります(下記参照)。両方の例では、すべてのページが同じコードビハインドファイルを共有するため、機能は同じですが、レイアウトは特定の画面サイズに合わせて調整されています。

画像2

特定の家族のためのコード

コードビハインドの一部または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契約ページから入手できます



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow