以下は、私が実際にやろうとしていることの簡単な例ですが、それに関する私の質問は同じです。
男性と女性の 2 つのオブジェクトがあり、どちらも同じプロパティ (年齢、身長、体重) を持っていますが、2 つの異なるオブジェクトであるとします。私はそれを変えることはできません。
ここで、特定の男性の年齢をテキスト ボックスに表示する MVVM 原則を使用して作成された WPF パネルがあるとします。そのために Text="{Binding Path=OnePerson.Age}" を使用します。ここで、OnePerson はビューモデルで定義されたタイプ Man のオブジェクトです。
これは問題なく動作しますが、同様のページでこの女性の情報を表示したいと考えています。理想的には、以前と同じビューとビューモデルを使用したいと思います。しかし、データバインディングが Man-object OnePerson を指しているため、これは注意が必要です。プログラムでデータ バインディングを変更できますが ( WPF Binding Programaticallyで説明されているように)、ビューのコード ビハインドからしか変更できません。MVVM モデルを使用しているため、これは許可されていません。
OnePerson に Man オブジェクトまたは Woman オブジェクトを参照させたいのですが、良い方法がわかりません。それらはタイプが異なるため、if ステートメントを使用して単に男性または女性を割り当てることはできません。OnePerson を型ではなくオブジェクトとして宣言することはできますが、そうすると、Age、Height、Weight の各プロパティに簡単にアクセスできなくなります。または、まったく異なる ViewModel を作成し、そのうちの 1 つは OnePerson を男性として宣言し、もう 1 つは女性として宣言し、両方に同じビューを使用することもできます。それはうまくいくと思いますが、1 つのビューに対して 2 つのビューモデルを使用するのは少し奇妙に思えます。そして、独自の Person クラスを追加し、それと Man または Woman の間で変換すると、新しい Man/Women の追加や既存のものの編集などの機能を追加し始めると、おそらくビューモデル全体がかなり複雑になります。
私の質問は、この場合、単一のビューとビューモデルを使用して男性または女性の情報を表示するためのクリーンでシンプルな方法があるかどうかです。それとも、これらの場合のために別のページを作成する必要はありませんか?
これが十分に明確であることを願っています。