管理人のページ

特設ページ

UWPのコーディング関連

更新日時:2017年08月30日
プログラム / 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使って自作するしかない模様。

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

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

コメント

fanfan
うわぁ〜‥こんなに大変なのですね。気軽にお願いしてしまいごめんなさい。ご負担にならない程度で・・・。
シンイチ
fanfanさん、いえいえ、勉強になりますので(笑)

新規コメント
最新コメント
シンイち。 (2025/12/13 08:13:35)
へりおさん、こんな僻地まで見に来てくれてありがとう...
へりお (2025/12/13 07:55:37)
シンイちさんとは一回ガチに飲まないといけない案件で...
シンイち。 (2025/12/12 15:44:42)
元々仕事上の繋がりあるとこなので大人の事情なら仕方...
(2025/12/12 14:55:04)
スーツアクターの特撮アクションコーナーワロタ。天才...
シンイち。 (2024/07/03 01:54:27)
#1結構やり込んだ人にならお勧め出来る!ただまだシス...