BETA

[WinForm] XAML Islands を使用する

投稿日:2020-06-16
最終更新:2020-06-26

・ 実行環境
エディション: Windows 10 Pro
バージョン: 2004
OS ビルド: 19041.264

・開発環境
ワークロード: .NET デスクトップ開発
インストールの詳細: .NET Framework 4.8 開発ツール

・プロジェクト テンプレート
Windows フォーム アプリケーション (.NET Framework)

0. NuGet で Microsoft.Toolkit.Forms.UI.XamlHost をインストールする。

1. WindowsXamlHostをデザイナで貼り付けようとする。

---------------------------  
Microsoft Visual Studio  
---------------------------  
コンポーネント 'WindowsXamlHost' を生成できませんでした。  エラー メッセージ:  

 'System.TypeLoadException: Windows ランタイム型 'Microsoft.Toolkit.Win32.UI.XamlHost.IXamlMetadataContainer' が見つかりませんでした。  

   場所 Microsoft.Toolkit.Forms.UI.XamlHost.WindowsXamlHostBase..cctor()'  
---------------------------  
OK     
---------------------------  

上記のエラーが発生しました。しかし、これを解消する方法は見つかりませんでした。

2-1. デザイナを使用せずに直接コードを記述する。

public partial class Form1 : Form  
{  
    public Form1()  
    {  
        InitializeComponent();  

        Microsoft.Toolkit.Forms.UI.XamlHost.WindowsXamlHost wxh = new Microsoft.Toolkit.Forms.UI.XamlHost.WindowsXamlHost();  
    }  
}  

以下のエラーが発生しました。

WindowsXamlManager and DesktopWindowXamlSource are supported for apps targeting Windows version 10.0.18226.0 and later.   
Please check either the application manifest or package manifest and ensure the MaxTestedVersion property is updated.'  

上記エラーをぐぐると以下の様な情報にヒットします。
Using XAML Islands on Windows 10 19H1
Windows-toolkit/Microsoft.Toolkit.Win32 issues #76

1) 「アプリケーション マニフェスト ファイル」を追加する
2) 「assembly -> compatibility -> application」の下に以下コードを追加する

<!-- Windows 10 -->  
<maxversiontested Id="10.0.18358.0"/>  
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />  

とすれば良いと読み取れた。

2-2-1. 「アプリケーション マニフェスト ファイル」を追加する。

なぜかこの段階でエラーが発生しなくなりました。

2-2-2. 「assembly -> compatibility -> application」に追加する。

「2-2-1.」ですでに問題は解消しているため変化は無しです。

OSビルドが「10.0.18358.0」であったときの記事を参考にしているため、
今回の環境では不要なのかもしれないです。(詳細を調べ切れず原因は不明)

3. その他、注意点

LTSC版のWindows 10は、最新バージョンが1809(OSビルド:17763.1282)のため、
この機能は動作しませんでした。

大元の手順は以下のサイトを参考にさせて頂きました。
Windows フォームアプリケーションで最新機能に対応する XAML Islands
XAML Islands の Windows Community Toolkit でラップされたコントロール (WinForms編)

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@u4xiの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう