Ich habe ein Hauptfenster und es hat eine Schaltfläche. Wenn ich die Hauptfenster-Taste drücke, öffnet sich das Unterfenster. Im Unterfenster habe ich ein Textfeld und wenn ich den Text eintrage und auf die Schaltfläche Hinzufügen im Unterfenster klicke, sollte der Text im Hauptfenster angezeigt werden. Wie erreiche ich das? Danke im Voraus.WPF Text von einem Fenster zu einem anderen Fenster
Antwort
Sie können den parametrisierten Konstruktor der MainWindow-Klasse erstellen und den Wert von Textbox vom Unterfenster zum Hauptfenster übergeben und in MainWindow können Sie Inhalt für diese Bezeichnung festlegen. Hier ist die Implementierung MainWindow.xmal.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public MainWindow (string text) : this()
{
label.Content = text;
}
private void button_Click (object sender, RoutedEventArgs e)
{
Window1 win1 = new Window1();
win1.Show();
this.Close();
}
}
Hier ist der Code für Subwindow dh Window1.xaml.cs
public partial class Window1 : Window
{
private string text;
public Window1()
{
InitializeComponent();
}
private void button_Click (object sender, RoutedEventArgs e)
{
text = textBox.Text;
MainWindow mainWindow = new MainWindow(text);
mainWindow.Show();
this.Close();
}
}
Dies verletzt die Trennprinzipien – Mafii
hier ist Beispielcode, den ich in meiner Anwendung versuche –
Hauptfenster XAML-Datei –
Sie können einfach den Konstruktor des zweiten modifizieren Fenster:
public partial class Window1 : Window
{
string text;
public Window1 (string _text)
{
InitializeComponent();
this.text = _text;
}
}
würde ich hinzufügen ein Ereignis für das Unterfenster 'Dialog', das MainWindow bei seiner Instanziierung abonnieren kann.
DialogWindow: (Subwindow):
public class DialogInputEventArgs : EventArgs
{
public string Input { get; set; }
}
public partial class DialogWindow : Window
{
public event EventHandler<DialogInputEventArgs> InputChanged = delegate { };
private void SubmitInputButton_Click(object sender, RoutedEventArgs e)
{
InputChanged(this, new DialogInputEventArgs() { Input = this._inputTextBox.Text });
}
}
Mainwindow:
private void ShowDialogButton_Click(object sender, RoutedEventArgs e)
{
DialogWindow dw = new DialogWindow();
dw.InputChanged += OnDialogInputChanged;
dw.Show();
}
private void OnDialogInputChanged(object sender, DialogInputEventArgs e)
{
// update the MainWindow somehow using e.Input (the text submitted in dialog)
}
Wenn Sie diesen Mechanismus für mehrere Fenster benötigen würde ich mit etwas mehr generisch, wie ein messagebus gehen oder beobachterpattern Sache.
Ich würde vorschlagen, dass Sie CaliburnMicro framwework verwenden, um eine einfachere und bessere Kommunikation zwischen Ihren Steuerelementen zu erreichen (vorausgesetzt, Sie verwenden das MVVM-Muster). Sie müssen nicht alle Funktionen von CaliburnMicro implementieren, nur EventAggregator, um das Senden und Verwalten von Nachrichten zwischen Ihren Steuerelementen zu verwalten.
- 1. ein Fenster von einem anderen in Wpf
- 2. Öffnen von WPF-Fenster aus einem anderen Fenster
- 3. Powerbuilder - Fenster von einem anderen Fenster öffnen
- 4. Müssen ein Fenster in einem anderen Fenster unter WPF
- 5. WPF: Hinzufügen eines Benutzersteuerelements zu einem Fenster
- 6. WPF-Anwendung in einem Fenster
- 7. Neues WPF-Fenster zu einem anderen Ordner hinzufügen
- 8. WPF-Layout auf einem Fenster
- 9. Das Handle zu einem WPF-Fenster finden
- 10. Hinzufügen eines Benutzersteuerelements zu einem wpf-Fenster
- 11. Verschieben von Zeilen von einem Fenster zu einem anderen
- 12. Wie eine Variable aus aktuellen Fenster zu einem anderen Fenster
- 13. Entfernen von Symbol aus einem WPF-Fenster
- 14. Wie sende ich Daten von einem Fenster zu einem anderen Fenster?
- 15. Move QWidget von einem Fenster zu einem anderen (in PyQt)
- 16. Wie wird das Fenster über einem anderen Fenster in einem anderen Thread gehalten?
- 17. Forward Winapi Ereignisse zu einem anderen Fenster
- 18. WPF-Fenster in einem WinformHost-Panel
- 19. WPF erkennt, wenn das Fenster von einem anderen Fenster geschlossen wird
- 20. Erben einer Liste aus einem anderen WPF-Fenster
- 21. WPF, wie eigenes Objekt zu anderen Fenster
- 22. WPF: Wie aus einem Fenster in einer anderen Baugruppe
- 23. Popup-Fenster in einem anderen Popup-Fenster Bootstrap
- 24. Ausnahme beim Erstellen WPF-Fenster in einem anderen Thread
- 25. Aktualisiertes Element/Steuerelement in einem WPF-Fenster
- 26. C# WPF transparentes Fenster mit einem Rand
- 27. WPF: Verwalten mehrerer Benutzersteuerelemente in einem Fenster
- 28. UserControl in einem Fenster funktioniert nicht WPF
- 29. Einbetten einer Anwendung in einem WPF-Fenster
- 30. Wie füge ich die Zeilenwerte aus einem Fenster zu einem anderen Fenster in Power Builder
Die Frage ist, warum brauchen Sie das? Ist es eine kleine Anwendung mit nur einem Anruf? Oder brauchen Sie zig von diesen? Willst du nur zwei Fenster haben? – sTrenat
Es ist eine Anwendung, in der ich viele Unterfenster habe, aber ich bin mit diesem Problem festgefahren. Alle Fenster funktionieren gut. Nur mit diesem Fenster bekomme ich den Text vom Unterfenster zum Hauptfenster nicht. –
Die schmutzigen Wege: Statische Eigenschaft, Übergabe der Referenz an mainWindow durch Konstruktor oder eine andere Methode, MainWindow von Application.Current erhalten. (...). Nicht so schlecht: IoC und Fenster aus dem Container holen. Gut: EventAggregator/Listener/Beobachter/Mediator/Messenger oop – sTrenat