作成しようとしている画面は、マルチパートの結果ビューアーです。バッチ ジョブが完了すると、それをダブルクリックしてこの画面を開くことができます。この画面には、実行したばかりのバッチ ジョブに関する基本データの上部セクション (画面の上部 30%、全幅) が含まれ、次に下部セクションが表示されます。 70% は、左揃えのリストボックス (幅の 20%) で構成され、サブ結果が選択され、詳細ペインが幅の残りの 80% を占めます。
左側のリストボックスでサブ結果を選択すると、右側のペインにサブ結果の詳細が表示されます。複雑でスケーラブルにする必要があるため、各サブ結果詳細表示パネルを UserControl として実装したいと考えています。
親の ViewModel にはIDictionary<Enum.ResultType, IResultPanel>
- が含まれており、リストボックスにはこのディクショナリのキーが取り込まれます。オプションを選択すると、ユーザー コントロールとなるディクショナリから IResultPanel オブジェクトがフェッチされます。以下のスニペットの例
public partial class SimpleCalcInfoResult : UserControl, IResultPanel
{
private SimpleCalcInfoResultViewModel _viewModel;
public SimpleCalcInfoResult(SimpleCalcInfoResultViewModel viewModel)
{
InitializeComponent();
_viewModel = viewModel;
}
}
IResultPanel インターフェイスは空白の空のインターフェイスであり、UserControls のディクショナリを持つことは広すぎると感じたので、上記のディクショナリを共通の型で持つことができるようにするためにのみ使用されます。
私が抱えている問題は、変更可能な UserControl パネルを持つために親コントロールで使用する XAML を理解できないことです。明らかにあなたが持つことができます
<local:MyControl> ... </local:MyControl>
ハード コーディングされたユーザー コントロールですが、選択した ListBox アイテムに応じて、表示されるユーザー コントロールを変更できる XAML のセクションを作成するにはどうすればよいでしょうか?