Was ich tun würde, ist Ereignisse zu verwenden, aus dem Hauptfenster zu kommunizieren Unterfenster. Und Methoden in den Unterfenstern, um das Hauptfenster zu hören.
Sie haben Ihr PlayerWindow wie, wo Sie einige Ereignisse aussetzen. Ich aded auch ein Verfahren zur Kommunikation in der anderen Richtung (Hauptfenster -> Player-Fenster)
public class PlayerWindow : window
{
public event EventHandler UserClickedButton;
//Here the function you call when the user click's a button
OnClick()
{
//if someone is listening to the event, call it
if(UserClickedButton != null)
UserClieckedButton(this, EventArgs.Empty);
}
public void ShowSomeStuff(string stuff)
{
MyLabel.Content = stuff;
}
}
Dann Sie Ihr Hauptfenster haben, dass die beiden Fenster (eine für jeden Spieler) erstellt und hören für die Ereignisse
public class MainWindow : Window
{
public MainWindow()
{
//we create the first window
PlayerWindow w1 = new PlayerWindow();
//hook to the event
w1.UserClickedButton += Player1Clicked;
//same for player 2
PlayerWindow w2 = new PlayerWindow();
w2.UserClickedButton += Player2Clicked;
//open the created windows
w1.Show();
w2.Show();
}
private void Player2Clicked(object sender, EventArgs e)
{
//Here your code when player 2 clicks.
w1.ShowSomeStuff("The other player clicked!");
}
private void Player2Clicked(object sender, EventArgs e)
{
//Here your code when player 1 clicks.
w2.ShowSomeStuff("The player 1 clicked!");
}
}
Halten Sie einen Verweis auf das Fenster 'Player1' in' Player2'. –
Ehm, wie soll ich das machen? – Cortana
Übergeben Sie es an Ihr 'Player2'-Fenster. Erstelle einen Konstruktor mit einem Parameter vom Typ 'Player1'. –