だるろぐ

明日できることは、今日しない。

Windows ストアアプリ開発に挑戦してみたけど難しい……

f:id:daruyanagi:20120915234152p:plain

「Markdown エディターがあれば便利かなぁ」と思って少し挑戦してみたけれど、だいぶめんどくさい。

まず、MarkdownSharp が動かない。これは30分ぐらいかけて手直ししたら動くようになった。HashTable 使っているのを Dictionary に、ArrayList を List に……といった感じ。MD5 の計算ルーチンも動かなかったので、これも WinRT 向けに書き直した。RegexOption.Compiled がないっぽいんだけど、どういうことなんだろうか。まぁ、適当に消しといたけど。

そこまではいいんだ。

とりあえずデザインなんかを考えずに、エディターとプレビュー用の WebView を同じ画面に置いて、エディターの内容を NavigateToString() で WebView に表示するというのを作った。

そしたら、 NavigateToString() するたびにフォーカスが WebView にとられてしまう。これは困った。WPF/Silverlight でも似たようなのを作ってあるのだけれど*1、そっちはそんな挙動じゃなかったのだけど。

MarkdownSharp.Markdown markdown = new MarkdownSharp.Markdown();

private void editor_TextChanged_1(
   object sender, TextChangedEventArgs e)
{
    preview.NavigateToString(markdown.Transform(editor.Text));
    await Dispatcher.RunAsync(
        Windows.UI.Core.CoreDispatcherPriority.High, () =>
        editor.Focus(Windows.UI.Xaml.FocusState.Programmatic));
}

ダメもとで強引にエディターへフォーカスを戻そうとしてもやっぱりイマイチだし……どうすればいいんだろうな。ページを遷移させてプレビューさせるのはもちろんできるのだけれど、それはあまりにも不便すぎる。頑張って Rx にして、キー入力のアイドル時にプレビュー → 即座にフォーカスをエディターへ戻すというのも考えたけど、フォーカスが移るたびにソフトウェアキーボードがぴょこぴょこするのが萎える。

同様の悩みを抱える人はいるみたいで、 Connect にもバグ報告があった。でも、すぐには治りそうにないよなぁ……。どうしよ。また違うネタ考えるかな。RSS のテンプレをちょちょいといじって提出するのでも最悪構わないけれど、それも面白くないしなぁ。

https://connect.microsoft.com/VisualStudio/feedback/details/753422/webview-in-windows-8-does-not-gain-focus-automatically-when-hovering-mouse-back-to-it

まぁ、もうちょっと勉強してから再挑戦するかな。無難に ToDo 管理アプリとか作ってみるか。それにしても、9月末までにちゃんとしたアプリを完成させるのはだいぶ難しそうだ。

追記

もうすでにあるし(==!

f:id:daruyanagi:20120916085918p:plain

ソースもみてみたけど、 HTML+JavaScript だった。実は Windows Phone への移植も考えている*2ので、 なるべく C#+XAML でやりたいんだけどな。

*1:途中で飽きて放置してある

*2:というか、そっちがもともと