ロジックコード(MainPage.xaml.vb)

MainPage.xamlを展開して表示されるMainPage.xaml.csをダブルクリックしてコードエディターを起動し、ロジックコードを記述していきます。

ロジックコード(MainPage.xaml.vb)

まず、名前空間を読み込みます(リスト3)。

リスト3 名前空間の読み込み

LINQ to XMLを利用するため、System.xml.Lingをインポートしておきます。

 using System.Xml.Linq;

次に、ImageInfoクラスを定義します(リスト4)

リスト4 ImageInfoクラスの定義

文字列型の「画像名」、「説明」、「タイトル」を定義します。

public class ImageInfo
{
  public string 画像名 { get; set; }
  public string 説明 { get; set; }
  public string タイトル { get; set; }
}

次にページがアクティブになった時の処理を記述します(リスト5)。

リスト5 ページがアクティブになった時の処理

この処理はインテリセンスから生成することができます。まずpと打ち込むと候補の一覧に「protected」が表示されますので、これを選択します。次に半角開けてoと入力すると、候補の中に「override」が表示されますので、これを選択します。次にonnaと入力すると、候補に「OnnavigatedTo」が表示されますので、これを選択すると、メソッドが生成されます(図5)。

図5:OnNavigatedTo のメソッドがインテリセンスで表示される(クリックで拡大)

XElement.Loadメソッドでphoto_etc.xmlを読み込みます。
次に、ImageInfoクラスの新しいリストであるmyImageInfoオブジェクトを作成します。
Descendantsメソッドで全ての子孫要素「情報」の内容を変数resultに格納しながら、以下の処理を繰り返します。
ImageInfoクラスの「タイトル」プロパティに「画像名」要素からPath.GetFileNameWithoutExtensionを使って、指定したパス文字列のファイル名を、拡張子を付けずに取得して指定します。「画像名」プロパティには「画像名」要素の値を、「説明」プロパティには「説明」要素の値を指定し、AddメソッドでmyImageInfoオブジェクトに追加します。
最後にFlipViewのItemsSourceプロパティに各プロパティの設定されたmyImageInfoオブジェクトを指定します。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
  XElement xmldoc = XElement.Load("photo_etc.xml");
  List<ImageInfo> myImageInfo = new List<ImageInfo>();
  foreach (XElement result in from c in xmldoc.Descendants("情報") select c)       
    {
    myImageInfo.Add(new ImageInfo {
        タイトル = Path.GetFileNameWithoutExtension(result.Element("画像名").Value),
        画像名 = "ms-appx:///Images/" + result.Element("画像名").Value,
        説明 = result.Element("説明").Value
      });
    }
      FlipView1.ItemsSource = myImageInfo;
               base.OnNavigatedTo(e);
}

リスト5を実行すると図6のように表示されます。

図6:Windows(左)とWindowsPhone(右)で表示させた。WindowsPhoneで縦に表示させると文字が小さくなるので、横にして表示させた(クリックで拡大)

今回は、以上で終わりです。一画面だけで処理するユニバーサルアプリなら、今回のように特に問題も発生せず、意外と簡単に作成できます。

ただ、注意してもらいたいのですが、今回の連載で作っているのは、あくまでユニバーサルアプリの入門用アプリなので、このアプリをWindows ストアに申請しても100%リジェクトされます。なぜなら、このアプリに有用性と価値がないからです。Windows ストアのアプリには必ず有用性と価値を求められます。この点については次回でまた解説します。

次回は、既に作成済みのWindowsストアアプリに、Windows Phoneのアプリを追加して作成する手順を解説します。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30