Weather Typing 3の作業が一段落なので,以前からやりたかったAnalog Book ReaderのUniversal Windows Platform対応を検討。UWPプロジェクトを作って既存のソースコードを追加,ビルドし直すところまではサクサクできたが,動かしてみるといろいろおかしなところがある。
- 戻るボタンが動かない
- ダイアログのレイアウトが崩れる
- Semantic zoomがマウスでできない
- ScrollViewerのズームがマウスでできない
- GridViewで右クリック選択できない
- ドラッグアンドドロップができない
- チャームがない
戻るボタンについては自分でボタンを付けるのではなくタイトルバーに付けられるようになっていた。確かにWindows 10のアプリはそうなっているのでそれでOK。
var view = SystemNavigationManager.GetForCurrentView(); view.AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; view.BackRequested += OnBackRequested;
レイアウトはまあ仕方ないので地道に直そう。
Semantic zoomに関してはMSのサンプルでもできないし,標準の時計アプリもズームできなくなっている。MSとしてはなかったことにしようとしてるのかなあ。
追記。と思ってもう少し調べたら以下のコードでできた。下のScrollViewerと同じで,ZoomModeを設定しないとホイールズームが使えない。
ScrollViewerのズームはScrollViewer.ZoomModeを設定することでできるようになった。Windows 8でもあったようだけど,デフォルト値が違うのかな。
GridViewで右クリック選択できないのは一番困るのだが,Windows 8.1では,右クリックで選択,左クリックで開くという動作ができたけど,Windows 10ではどちらかの動作しかできない。
ホント? と思ってWindows 10のスタートメニューを試したら確かに選択ができなくなっている。複数のタイルを移動したくなっても1つずつドラッグしないといけないのか。ずっとこの仕様でいくのかな。タブレットでもSwipe選択がなくなっているような・・・。
ドラッグアンドドロップができないのはWindows 10で増えたプロパティDragEventArgs.AcceptedOperation にDragOverから設定してやればOK。ついでに
if (e.DataView.Contains(StandardDataFormats.StorageItems)) { var storage = await e.DataView.GetStorageItemsAsync(); }
でファイルのドラッグアンドドロップができるようになる。まさにこれがやりたくてUWPに移行しているのでうまくいってよかった。
チャームは,どうやるのが正しいのだろう。バージョン情報をどこで出すのか? ということだけど,メニューからやるのかな。未調査。