HubSection内のコントロールの更新 ― 2015年07月18日 15:46
今回は、簡単なゲームでも作ってみようと、ゲーム画面を構築後、入口となる画面をHubで作り始める。MSのデザインガイドによると、アプリの入口としておすすめらしい。
それらしいUIを作った後、HubSectionに埋め込んだTextBlockのText文字列を更新するコードを書こうとしてはまる。通常、コード入力時にx:Nameで定義されたXAML要素を入力すると、補完が働くが、動作しない。
少し調べると、HubSectionの内容は、DataTemplateとして定義されるので、コードからは直接のアクセスはできない。HubSectionの名前まではアクセスできるので、以前やったようにFindNameで目的のTextBlockを検索してみるが、これもだめ。MSの開発者Forumには、VisualTreeHelperを用いる例が掲載されているが、このやりかたは少し悔しい。
※MSの開発者Forum:VisualTreeHelperによる例
https://social.msdn.microsoft.com/Forums/ja-JP/84692627-6331-456e-8e2a-8cb1f14f2146/new-to-xaml-access-properties-of-control-in-hub-section?forum=wpdevelop
https://social.msdn.microsoft.com/Forums/ja-JP/84692627-6331-456e-8e2a-8cb1f14f2146/new-to-xaml-access-properties-of-control-in-hub-section?forum=wpdevelop
ふと思いついて、Application Resourceを介したやり方を試してみる。表示するデータを保持するclassを定義した後、このclassをApp.xamlに定義する。
class定義では、プロパティにgetterの定義を忘れないこと。debugで手間取る。ここではまるとは情けない。
画面を定義するMainPage.xamlのHubSectionにて、TextBlockのTextをBindingでStaticResourceから取得するように定義する。赤枠の部分。緑色の四角の中に3つのTextBlockを設けている。XAML Designerでは1つめのTextBlockのみ表示されている。
コードを記述するMainPage.xaml.csでは、5行目でResourceからオブジェクトへの参照を取り出した後、最後の行で表示したい値を設定する。
実際に動かしてみたところ。意図したとおり、表示できている。
P.S.
roamingSettingsまわりのコードは虫だらけなので、見ないで。
桜 ― 2015年07月18日 18:24
少し季節外れ。購買予定リストに載せたのは春だった。NHKのサイエンスZEROでも桜を取り上げた回があったので、そのときだったか。分類学の話など、語らずにはいられないが、多くの読者には興味が薄いであろう記述がやや目立つが、身近な木のことでもあり、興味は尽きない。歩き旅の身には、次の春は山に野生の桜を訪ねていきたくなる。
※サイエンスZERO、桜の回
桜花がほとんど散った遅い春に札幌郊外の森林総研を散策したときに見つけたウワミズザクラ。サクラと名がつきながら、サクラに見えない木の謎も解けた。
最近のコメント