以前のWindows 10へのバックポート
Windows UI Library
「UIの進化が速いのはいいけれど、Windows 10の旧バージョンもサポートしなきゃならんうちには関係ないよ!」。ごもっともです。そんなあなたのために、「Windows UI Library」がリリースされました。
-
Windows 10 1607(14393)から利用可:
※それ以前の1507/1511は2017年にサポートがすべて終了しています(「Windows ライフサイクルのファクト シート」参照) -
最新のUIを可能な限りサポート:
※一部、OSの機能に依存する機能などでサポートされないものもあります -
プレビュー段階のコントロール:
Windowsインサイダープログラムに参加していなくても、開発中のコントロールをプレビュー版のWindows UI Libraryで試せます -
XamlDirect API:
コントロール開発者向けのミドルウェア。C#/VBのコードで直接コントロールを生成。高速ですが記述が冗長になるので、常用するものではありません
ここでは、Windows UI Libraryを使って、ここまで述べてきた最新のUIを旧バージョンのWindows 10 1703向けのアプリに組み込んでみましょう。
開発環境
これは一般的な話ですが、ターゲットにする最小バージョンと同じWindows 10を用意します。少なくとも、テスト環境としては用意してください。できれば、開発環境も入れてコーディングやデバッグができるとよいです。
本来は、最新のWindows 10上で開発していても、ターゲットにした最小バージョンで動かないコードを書いたときはIDEが警告してくれるはずなのです。が、それが完ぺきとは限りません。例えば、Windows 10 1809上で、ターゲットの最小バージョンを1703にして開発するとします。そこで動いていたコードが1703の上に持って行くと動かない、ということが起こりうるのです。
古いWindows 10上にVisual Studio 2017を入れた場合でも、ターゲットにする最大バージョン用のWindows 10 SDKはインストールしておきます。例えば、ターゲットを1703~1809にするならば、1809用のSDKをインストールしておく必要があります。Visual Studio 2017のインストーラーに出てこないバージョンのWindows 10 SDKも、「Windows SDK とエミュレーターのアーカイブ」ページからダウンロードできます。なお、このようにすると、XAMLエディターがプレビューを表示しなくなるので、UIの記述はXAMLの直書きだけで行うことになります。
Windows UI Libraryを導入する
まず、前提条件としてVisual Studioは2017以降になります。UWPのプロジェクトを作るときに、最小バージョンは1607(14393)以上、ターゲットバージョンは1803(17134)以上にしなければなりません。
次に、NuGetで「Microsoft.UI.Xaml」を検索し、「Microsoft.UI.Xaml」パッケージを導入します。本稿執筆時点ではプレビュー版の「Microsoft.UI.Xaml.Core.Direct」パッケージもありますが、そちらはXamlDirectです。
最後に、忘れずにApp.xamlのリソースにXamlControlsResourcesを追加しておきます(次のコード)。
XamlControlsResourcesを追加する
<Application
……省略……
>
<Application.Resources>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>
</Application.Resources>
</Application>
