- UWP
今回は簡単なツールをUWP化してみたときの感触です。
■ XAMLコントロール
DockPanel がない!
ListView がなんかちがう!
UWP にも ListBox はあるが、用途が違うらしい。特に理由がなければ ListView を使っておくのが良さそう。
WPF の ListView みたいに列項目のある一覧表示コントロール(DataGrid)がなさそう。さてどうしようか。 そのあたりを考察ているページがありました。
Grid に IsEnabled が無い!
BooleanToVisibilityConverter が無い!
ValueConverter を作ることが多くなりそう。
Style の Setter に Binding が使えない!
Style.Triggers が無い!
ValueConverter で代用したほうが良いかも。
Visibility.Hidden が無い!
「アプリケーションは、別のスレッドにマーシャリングされたインターフェイスを呼び出しました」
UWP と MVVM のパフォーマンスの関係
- Binding は遅い。 x:Bind を使おう。
- ICommand は遅い。 イベントハンドラーを使おう。
- Visibilityプロパティのバインドによるロード時のコントロール非表示化は遅い。 x:Load や x:DeferLoadStrategy を使って初期化を延期しよう。
■ ファイルアクセス
ファイルの扱い方がぜんぜんちがう!
FilePicker等で取得したオブジェクトは履歴等に登録することが可能で、次回起動時に再利用できます。
ファイルの Drag & Drop による取り込みは可能ですが、ReadOnlyです。
ファイル削除の動作がゴミ箱に対応!
■ 既存の外部アプリの起動方法 (調査のみ、未検証)
exe を Appx 内に置き、FullTrust 設定にすれば呼び出せるようです。 Appx 外の exe を呼び出すには、そういう処理を行う exe を新しく作って、それを AppService にすればよいのか?
※ FullTrust 設定にすると普通のストアアプリとしては申請できなくなるので注意。DesktopBrige を使用したアプリとして特別な申請が必要?
別解として、プロトコル登録されている UWP ならURI指定で呼び出せます。
■ 今の所の感想
UWP は今までのWIN32デスクトップアプリ(特にファイラーやツール系のアプリ)からは簡単には移行できないと感じました。困ったらWIN32APIたたけーみたいなことができないので、全く同じ機能を提供することができません。特にファイル系が致命的に概念が異なります。UIはXAMLで書けますが、重くなるものはばっさりカットされたような感じで、いろいろと発想の転換が必要になります。 つまりWindowsでない新しいプラットフォームといったほうが近いように感じます。UWPへの移行は異なるプラットフォームへの移植と捉えたほうがよさそうです。
ただ .NET Standard があるように、コア部分は共通で使えるので、その範囲であれば共有できそうです。
0 件のコメント:
コメントを投稿