C# WPF: Neues Form zu einer kompilierten App hinzufügen?

regex9  13.10.2022, 19:38

Was bringt das Einbringen eines neuen Fensters? Inwiefern verknüpft es sich mit der bestehenden Anwendung / Programmlogik?

Schachler 
Fragesteller
 13.10.2022, 19:42

Es soll eine Anwendung werden, bei der ein Benutzer Livedaten einspielen kann und auch live visualisieren. Neue Fenster sollen dem Benutzer eigene Visualisierungsarten ermöglichen.

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Das Einbinden selbst würde ich über ein Event (z.B. einen Buttonklick) lösen. Wenn der Nutzer auf diesen drückt, wird in einem Event Handler in einem spezifischen Ordner geschaut, welche Dateien enthalten sind.

Für das Lesen der Dateien eignet sich ein XAML-Reader/Parser. Den gelesenen Knoten könntest du anschließend in ein Grid- oder StackPanel-Element hängen. Das heißt auch, die XAML-Dateien sollten UserControls darstellen.

using (var stream = new FileStream(filename, FileMode.Open))
{
  var root = (UIElement)XamlReader.Load(stream);

  SomeGrid.Children.Add(root);
  SomeGrid.SetColumn(root, 0);
  SomeGrid.SetRow(root, 0);
}

Jegliche Bindings und Events musst du im Anschluss manuell setzen. Mit dem LogicalTreeHelper kannst du über die Baumstruktur iterieren, um die entsprechenden Elemente zu finden.