Wie sollte ich die übergabe von Daten zwischen WPF-Windows mit `MainWindow` (C#)?

Ich bin derzeit ab einem C# - Projekt, in dem ich bin Modellierung ein einfaches ATM-Maschine, und müssen daher mehrere Bildschirme. Ich habe laufen in das problem der übergabe von Daten zwischen Dynpros vor, wenn ich desletzt eine StockTicker-Brettspiel-adaption, aber ich glaube nicht, dass meine Methode zu lösen, es war sehr gut.

Viele meiner Probleme ergeben sich aus der Tatsache, dass ich MainWindow wie in der primären Fenster der Anwendung. Ich bin in der Lage, einfache übergabe von Daten aus dem sekundären Fenster wieder auf den primären Fenster, ich in der Lage bin, auf die Eigenschaften des Window1 Klasse, nachdem es geschlossen wurde. Jedoch, Transfer vom MainWindow zu Window2 muss ich hinzufügen einen parameter dem Konstruktor der Window2 ermöglichen, mir zu übergeben die erforderlichen Werte ein.

Während dies funktioniert auch für eine kleine Anwendung ist, ist es meine Meinung, dass dies sehr lange Orgien mehr für die Dinge, die übergeben werden müssen, um Window2. Außerdem, ich weiß gar nicht, wie man den Zugriff auf die Methoden, die ich erkläre MainWindow aus Window2. Da MainWindow ist der primäre Bildschirm, die meisten meiner Codierung ist in seiner Klasse.

  • Wie kann ich den Zugriff auf eine Methode, die ich in MainWindow aus Window2 ??

(Zur Klärung) ich verbrachte einige Zeit auf der Suche rund um, und kann nicht finden, ein deutliches Beispiel, geht es insbesondere um MainWindow, und dass ein Zugriff auf die Variablen/Methoden zu finden.


Hier ist mein C# - code (ich habe versucht, eine klare Variablennamen). Der Kern des Programms ist, dass Sie einige Daten auf Formular 1, welches dann übergeben wird, Form 2, wenn die Schaltfläche geklickt wird. Von hier aus, es kann geändert werden, aber der Benutzer möchte, und dann ist es wieder zugegriffen werden kann von der Form 1, wenn Formular 2 ist geschlossen.

In diesem Beispiel bin ich lediglich zeigen, dass ich einen Weg gefunden haben, die zum übertragen von Daten von Formular zu Formular, aber ich bin sicher, dass es einen besseren Weg gibt. Speziell, ich bin sicher, dass es einen schöneren Weg, als dass Sie möglicherweise code verschiedene Konstruktoren mit unterschiedlichen Parameter für die Window2 Klasse.


Erste WPF-Fenster-Code:

namespace Banking_System
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void btnSwitchForm_Click(object sender, RoutedEventArgs e)
        {
            string strForm1Text = txtForm1TextBox.Text;

            Window2 newWindow = new Window2(strForm1Text);
            newWindow.ShowDialog();

            txtForm2TextBox.Text = newWindow.strForm2Text;
        }
    }
}

Zweiten WPF-Fenster-Code:

namespace Banking_System
{
    public partial class Window2 : Window
    {
        public string strForm2Text { get; set; }

        public Window2(string form1)
        {
            InitializeComponent();

            txtForm1.Text = form1;
        }

        private void btnSwitchBack_Click(object sender, RoutedEventArgs e)
        {
            strForm2Text = txtForm2TextBox.Text;
            this.Close();
        }
    }
}

Wäre ich besser dran, um einen anderen WPF-Fenster, und haben es zu laden, sobald die MainWindow geladen, und dann verstecken Sie MainWindow und "vorgeben", dass die anderen Fenster wurde der primäre Bildschirm? Denn dann könnte ich einfach den Zugriff auf die Eigenschaften in der gleichen Weise, dass ich oben (bei der übertragung von Window2 zu MainWindow).

ie. Wenn Sie benötigen, um den Zugriff auf eine variable/Methode aus einem anderen Fenster, deklarieren Sie einfach eine neue temporäre Fenster und den Zugriff auf die Eigenschaften/Methoden:

FakeMainWindow wndPrimary = new FakeMainWindow();
wndPrimary.strProperty= "test";
wndPrimary.methodCall();

Den primären Reiz dieser Weg für mich ist, dass ich auf Methoden zugreifen, die auf einem anderen Fenster (wie oben dargestellt), die kann ich nicht tun, während mit MainWindow als meine primäre form.

Zusammenfassung

  • Wie kann ich den Zugriff auf eine Methode, die ich in MainWindow aus Window2?
  • Ist es besser, erstellen Sie einen anderen WPF-Fenster, und behaupten, dass es mein "Haupt-Bildschirm", so dass ich problemlos den Zugriff auf Ihre Eigenschaften?
  • Wenn nicht, gibt es eine bessere Art zu arbeiten mit MainWindow?

Wenn mir etwas fehlt, lasst es mich wissen. Danke!

MvvmLight - Nachrichten PRISMA Ereignis-aggregator, entkoppelt Nachrichten für den Sieg

InformationsquelleAutor Kendall Roth | 2015-05-05

Schreibe einen Kommentar