Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
What to Upload to SlideShare
Loading in …3
×
1 of 33

XAML Islands その2

2

Share

Download to read offline

XAML Islands の紹介と全容の理解

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

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

×