Chapter 01無料公開

はじめに

Romanee
Romanee
2023.01.29に更新
このチャプターの目次

今回は、表題の動作を他の記事やブログで紹介されていないであろうアプローチで実現する方法を書く。

制約事項

  • 紹介する方法はxaml2009のGenericを多用するため、WPFやWinUI3といった現時点でxaml2009に非対応のフレームワークではおそらく使えない。というより、使えるのかもしれないが私の環境ではエラーで実行できなかった。(情報求む)
  • 現時点で適用可能なフレームワークはMAUIのみ

背景

以前書いた記事でComboBox等のコントロールにEnum値をそのまま設定・表示する方法を紹介したが、一般的なアプリケーションにおいて変数名をそのまま画面に表示するようなことは稀だろう。普通は一般の人にもわかるような表現に変換して表示する。

これを実現する方法は様々あるが、軽く調べて出てくる情報の大半は①元のEnum値に属性等で表示文字列を付与していたり、②コードビハインドないしViewModelでEnum値と表示文字列のハッシュを作成し、xaml側でソースとしてバインドする形を取っていたりする。

の方法は実装する側としては楽だし対応関係も分かりやすいのでやってしまいがちだが、ModelのデータとViewのリソースを同じ場所で定義することになり[1]、諸説あるにせよプレゼンテーションとドメインの分離という観点において最悪である。また、一つのEnum値に対し複数の箇所で異なる表現を使用するケースでは、Viewに合わせた歪な設計が発生する。

の方法は上記分離の観点においては特に問題無いが、画面に表示する内容をxaml上で確認/変更できないという欠点がある。

これらの問題をなんとかうまく解消できないか、無い脳みそこねくり回してあれこれ考えた結果が本記事の主旨となる。

脚注
  1. 表示内容をリソースファイル等から取得する設計であっても同様。 ↩︎