Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

XAML Islands その2

Más Contenido Relacionado

Audiolibros relacionados

Gratis con una prueba de 30 días de Scribd

Ver todo

XAML Islands その2

  1. 1. / 32 XAML Islands その2 1 城東.NET #29 2019年02月20日 石崎 充良
  2. 2. / 32 自己紹介 石崎 充良 ( @mishi_cs ) Japan Xamarin Users Group ( JXUG ) Microsoft MVP for Developer Technologies 言語: C# XAML 活動: ・JXUG (もくもく会) (connpass) ・城東.NET Users Group (connpass) ・C# もくもく会 (connpass) ※主に秋葉原 2
  3. 3. / 32 XAML Standard とは関係ありません 3
  4. 4. / 32 XAML Standard とは ・文法の基本は同じだが、複数のプラットフォーム毎の要素の実装差により同じ XAML が書けない。 ・プラットフォーム毎に要素のプロパティなど API を統一しようという夢の規格。 https://github.com/Microsoft/xaml-standard/commits/staging https://github.com/Microsoft/xaml-standard 4
  5. 5. / 32 実装 https://docs.microsoft.com/ja-jp/xamarin/xamarin-forms/xaml/standard/ 5
  6. 6. / 32 XAML Islands 6
  7. 7. / 32 Windows 最新機能が使える ・WPF や Windows フォームアプリケーションで Windows 最新機能が使える夢の技術 ・Windows 最新機能 = UWP で実装される ・UWP のコントロールが WPF や Windows フォームで使える ・October 2018 Update で使えるようになった (まだ問題はある) 7
  8. 8. / 32 なぜ WPF や Windows フォーム? ・WPF などのデスクトップ技術にはまだまだメリットがある ( 配布・インストーラ・ファイルアクセス… ) ・新機能は UWP (だけ)に追加される ・デスクトップアプリを UWP のインストールフォーマットで包んでストアで配信する ことも UWP という扱いにまでなった ・UWP の未来は… Hololens? 8
  9. 9. / 32 UWP コントロールが使える 9 ・WPF には ProgressRing がない (自作したり、外部ライブラリなどはある) ・WPF ももう10年前の技術
  10. 10. / 32 始め方 10
  11. 11. / 32 手順 ・普通にプロジェクトを作る ・NuGet からパッケージをインストール ・プロジェクトに UWP 関係の参照を追加 ・WindowsXamlHost コントロール(NuGet パッケージ内に有) を画面に配置 ・WindowsXamlHost コントロールのプロパティに生成するコントロール名を設定 ・WindowsXamlHost コントロール ChildChanged イベントで生成されたコントロール の設定を行う 11
  12. 12. / 32 普通にプロジェクトを作る ・普通にプロジェクトを作ります 12
  13. 13. / 32 NuGet からパッケージをインストール ・NuGet からパッケージをインストール または 13
  14. 14. / 32 プロジェクトに UWP 関係の参照を追加 ・コントロールを表示するだけなら参照の追加は 2 件で OK ※プロパティの設定などを行うには他にも参照が必要 14
  15. 15. / 32 追加する参照の全容 ・それぞれ何に必要かは未検証です。 15https://docs.microsoft.com/ja-jp/windows/uwp/porting/desktop-to-uwp-enhance#first-set-up-your-project
  16. 16. / 32 WindowsXamlHost を画面に配置 xmlns の追加 Xamlhost エレメントの配置 16 xmlns:xamlhost="clr-namespace:Microsoft.Toolkit.Wpf.UI.XamlHost;assembly=Microsoft.Toolkit.Wpf.UI.XamlHost"
  17. 17. / 32 生成するコントロール名を設定 生成するコントロール名を設定 17
  18. 18. / 32 ChildChanged でコントロールの設定 コントロールが生成されると ChildChanged イベントが発生する (破棄のタイミングでも発生するので注意) 18
  19. 19. / 32 実行 ※現在 DPI 関係に未対応事項あり 19
  20. 20. / 32 コントロール 20
  21. 21. / 32 使えると書かれているコントロール ・WebView ・WebViewCompatible ・InkCanvas ・InkToolbar ・MediaPlayerElement 21https://docs.microsoft.com/ja-jp/windows/uwp/xaml-platform/xaml-host-controls
  22. 22. / 32 WindowsXamlHost 不要 22
  23. 23. / 32 NuGet パッケージ追加 23
  24. 24. / 32 実行 24
  25. 25. / 32 参照の追加不要 ・これらの参照を追加 しませんでした 25https://docs.microsoft.com/ja-jp/windows/uwp/porting/desktop-to-uwp-enhance#first-set-up-your-project
  26. 26. / 32 もう一つの コントロール 生成方法 26
  27. 27. / 32 コードで生成すると楽そう 27 UWP のコントロールは普通に ビハインドコードでインスタンス化できる UI に置くには、XamlHost コントロールの 中に入れなければならない
  28. 28. / 32 おまじないについて ・UWP のコントロールを生む際に、「そのスレッド上で」一度呼んでおく必要がある。 ・UI スレッドなら、イベントハンドラを超えて同じスレッドなので一度呼んで置けば 特に気にする必要はない。 ・XamlHost をインスタンス化すると、呼ばなくてよい(内部で呼ばれている?) ・XamlHost は Xaml でインスタンス化しておけば、InitializeCompomemt() で完了し ているのでより気にしなくてよい。 28
  29. 29. / 32 試してみましょう 29 おまじない無しだと例外 先に XamlHost を インスタンス化すれば おまじない不要
  30. 30. / 32 コンテナも使える これでいいのでは? 30
  31. 31. / 32 ほぼ全てのコントロールが使える 31https://rksoftware.hatenablog.com/entry/2019/01/20/193954
  32. 32. / 32 まとめ ・HoloLens でないなら、もうこれでいいのでは? 32
  33. 33. / 32 ありがとうございました! 33

×