Dynamisches Ändern des UserControl-Inhalts zur Laufzeit mit WPF / MVVM

Der Bildschirm, den ich erstellen möchte, ist eine mehrteilige Ergebnisanzeige. Wenn Ihr Stapeljob abgeschlossen ist, können Sie darauf doppelklicken und diesen Bildschirm öffnen, der einen oberen Teil der Basisdaten des gerade ausgeführten Stapeljobs enthält (obere 30% des Bildschirms, volle Breite), dann den unteren 70% bestehen aus einem linksbündigen Listenfeld (20% der Breite) mit einer Auswahl von Unterergebnissen und einem Detailfenster, das die restlichen 80% der Breite einnimmt.

Wenn Sie das Unterergebnis im linken Listenfeld auswählen, werden im rechten Bereich die Details des Unterergebnisses angezeigt. Da es komplex sein wird und skalierbar sein muss, möchte ich jedes Detailanzeigefeld für Unterergebnisse als UserControl implementieren.

Das übergeordnete ViewModel enthält einIDictionary<Enum.ResultType, IResultPanel> - und das Listenfeld wird mit den Schlüsseln dieses Wörterbuchs gefüllt. Wenn Sie eine Option auswählen, wird das IResultPanel-Objekt aus dem Wörterbuch abgerufen, bei dem es sich um Benutzersteuerung handelt, ein Beispielausschnitt unten

public partial class SimpleCalcInfoResult : UserControl, IResultPanel
    {
        private SimpleCalcInfoResultViewModel _viewModel;

        public SimpleCalcInfoResult(SimpleCalcInfoResultViewModel viewModel)
        {
            InitializeComponent();
            _viewModel = viewModel;
        }
    }

Die IResultPanel-Schnittstelle ist eine leere, leere Schnittstelle, die nur verwendet wird, um die Verwendung des obigen Wörterbuchs mit einem allgemeinen Typ zu erleichtern, da ich der Meinung war, dass ein Wörterbuch mit Benutzersteuerelementen zu umfangreich ist.

Das Problem, das ich habe, ist, dass ich nicht herausfinden kann, welche XAML im übergeordneten Steuerelement verwendet werden soll, um ein änderbares UserControl-Bedienfeld zu haben. Natürlich können Sie haben

<local:MyControl> ... </local:MyControl>

Als hartcodiertes Benutzersteuerelement, aber wie kann ich einen Abschnitt in XAML haben, in dem ich ändern kann, welches Benutzersteuerelement angezeigt wird, je nachdem, welches ListBox-Element Sie auswählen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage