アイテムのリストを含む WPF のリストボックスがありResultsViewModel
ますが、これらのオブジェクトの実際のランタイム タイプは
CalculateResultsViewModel
、ScenarioResultsViewModel
、GraphResultsviewModel
などなど、
これらはすべて基本抽象クラスを拡張しResultsViewModel
ます。
これらの各ビュー モデルは、異なる でレンダリングListBox
する必要があるため、異なる が必要DataTemplate
です。XAML だけで簡単に実行できます。難しいのは、ビューモデルが「処理中」または「失敗した」場合、DataTemplate
「処理中」または「エラー」を表示する必要があることですTriggers
。これは、これまでのところ .DataTemplateSelector
または基本的な XAML スタイルを使用します。
私が考えることができる唯一の解決策は(私が知っているきれいではありません) 、各ビューモデルクラスDataTemplate
のメソッドでプログラムで設定するSetResult()
ことです。これは、処理が正常に完了したとき、またはエラーが発生したときに呼び出されます。その中で、リターン コードを確認し、成功/失敗の結果に応じてDependencyProperty
プログラムで設定することができます。DataTemplate
唯一の問題は、方法がわからないことです
DataTemplate
C# コードを使用するだけでリソースを取得しResourceDictionary
ます。ウィンドウのコード ビハインド .xaml.cs ファイルではなく、viewmodel クラスからこれらすべてを呼び出すことに注意してください。Window
ビューモデル クラスへのハンドルのみを持っている
ListBoxItem
場合は、それを含む への参照を何らかの形で取得し、プログラムDataTemplate
でこのコンテナに を設定します。
誰かが私を正しい方向に向けることができますか?