2017年08月30日(水) UWPのコーディング関連
[カテゴリ] プログラム / WindowsMobile / Windows / ソフトウェア

ハマったところをメモ

・StorageFolder.GetFolderFromPathAsync() は使っちゃダメ

UWPだと基本、パスではなくStorageFolderやStorageFileオブジェクトで扱うんですが、そうは言ってもパスを保存したりしたいので探したところ見つかった関数。
パスからStorageFolderオブジェクトへ変換してくれるので、なんだ、これがあれば全部パスで扱えるじゃん…と思ったのですが、どうもリリースだと動かない?
最初にリジェクトされたのはこれが原因の模様。
じゃぁそもそも何に使うの?って感じなんですが。
そんな関数作らなくていいのに…w

基本、パスはブラックボックス化して、StorageFolderとStorageFileで全て操作するようにする。
保存や復元には

StorageApplicationPermissions.FutureAccessList

を使う。ただ、これで保存しても何かのタイミングで消えてしまうので今後の課題。


・規定ではUTF8しか使えないので他の文字コード使う場合はおまじないが必要

System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

なぜデフォルトで使わせてくれないのか謎。


・MessageDialogに設定出来るボタンの数

var msg = new MessageDialog("メッセージ", "キャプション");
msg.Commands.Add(new UICommand("はい"));
msg.Commands.Add(new UICommand("いいえ"));
msg.Commands.Add(new UICommand("キャンセル"));
var res = await msg.ShowAsync();

とかすると、モバイルの場合だけShowAsync()で落ちる。
いろいろ調べたらモバイルだとボタンの上限が2個までらしい、冗談だろ…w
なので、Yes、No、Cancelのダイアログ欲しい場合はContentDialog使って自作するしかない模様。

複数デバイスが同一コードで動くのはとても素晴らしいのですが、とは言えやっぱりモバイルだけだめとかあるんですね…それなら最初からデスクトップでも動かなくしといて欲しいですわ。

いろいろ癖があるのに情報少なくて度々躓いてます。
出来ること出来ないことがわかってくるともうちょっとスピーディーに進められるんですが。

コメント

2017年08月31日(木) 16:21 fanfan
うわぁ〜‥こんなに大変なのですね。気軽にお願いしてしまいごめんなさい。ご負担にならない程度で・・・。
2017年08月31日(木) 16:34 シンイチ
fanfanさん、いえいえ、勉強になりますので(笑)
お名前