2017-10-23 1 views
1

Ich bin Neuling zu programmieren und jetzt habe ich ein Problem mit meinem neuen Anmeldefenster. Ich habe ein neues Fenster für die Anmeldung in meiner Server-Datenbank erstellt, aber in meinem Hauptfenster wie rufe ich es an? Ich weiß nicht, wie ich es besser machen soll.Wie Übermitteln von Daten von Windows an MainWindow in WPF?

In meinem Login-Fenster:

using MyS_Database; 
MyServer_Database server; 

public void LoginButton_Click(object sender, RoutedEventArgs e) 
{ 
    server = new MyServer_Database("ClientName","ServerIP","","",UserID.Text,UserPassword.Password.ToString(),"01",MyServer_Database.LoginType.User,out serverresult) 
    swith(serverresult) 
    { 
    case 0: 
    Mainwindow.Show(); 
    this.Close(); 
    break; 

    default: 
    Environment.Exit(0); 
    } 
} 

Aber wenn ich eine Methode auf meinem Mainwindow aufrufen, die mit dem Server kommuniziert, ich habe es nennen mag:

server.GetDataFromUserList(); 

aber es funktioniert nicht Server zu erkennen, versuchte ich etwas wie Win1.Server oder ähnliches, aber ich scheiterte. Wie könnte ich es weitergeben? Vielen Dank im Voraus!

+1

Mit WPF sollten Sie versuchen, MVVM zu verwenden - so werden alle Data Passing-Herausforderungen problemlos bewältigt. Es wird zunächst etwas dauern, ist aber den Schmerz wert. –

Antwort

1

Die schnelle Antwort ist Server öffentlich so zu machen:

public MyServer_Database Server { get; set; } 

Dann können Sie es in MainWindow mit nennen:

Win1.Server.GetDataFromUserList(); 

Aber das ist kein guter Ansatz. Besserer Ansatz ist es, diese Art von Operationen in verschiedenen Klassen über MVVM zu abstrahieren. Lesen Sie mehr über MVVM und Sie werden großartige Ansätze finden.

bearbeiten

sollten Sie außerdem eine eine dieser beiden Dinge:

  1. nicht in der Nähe Win1 statt this.Hide();

  2. Halten Sie die Instanz von MyServer_Database in MainWindow tun, indem Übergabe an den Konstruktor Win1.

sollten Sie dieses in MainWindow

public MyServer_Database Server { get; set; } 

und bei Bedarf nennen dies:

var Win1 = new LoginWindow(Server); 

Dann haben Sie Zugriff auf Server Objekt in MainWindow

+0

Aber meine App meldet sich nur beim Server an, wenn ich die Taste drücke, wenn ich den MyServer_Database Server in den öffentlichen MyServer_Database Server {get; einstellen; } wird mein Hauptfenster es richtig aufrufen? Da mein Login-Fenster diese Login-Methode nicht ausführt, kann mein MainWindow – Tamas555

+0

das Problem für mich unklar sein. Können Sie das Anmeldefenster anzeigen? Funktioniert es korrekt mit dem Server und erhält das Login-Ergebnis? – Emad

+0

Ich habe eine System.nullreference.exception erhalten, als ich eine Server-Methode auf meinem Hauptfenster nach erfolgreicher Anmeldung aus dem Login-Fenster – Tamas555

Verwandte Themen