2012-04-04 8 views
1

Ich versuche folgendes zu tun zu bekommen:WPF Showdialog Textbox mit var Inhalt

Eine WPF-Anwendung, wo ich mehrere Schaltflächen, wo Sie eine Benachrichtigung festlegen. Abhängig von der Schaltfläche können Sie verschiedene Nachrichten einstellen.

Was ich tat, war auf die Nachricht Taste i diesen Code gesetzt haben:

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    CounterMessage msgOne = new CounterMessage(); 
    msgOne.ShowDialog(); 
} 

Dies wird hier ein neues WPF-Fenster öffnen op nur eine Textbox und eine Exit-Taste. Beim Beenden in diesem Nachrichtenfenster wird die Nachricht in einem Parameter gespeichert.

Aber hier ist der Trick. Ich möchte dieses Nachrichtenfenster für mehrere Benachrichtigungen verwenden, und es wird in der Textbox jeden Textinhalt angezeigt, wenn bereits eine Zeichenfolge in der Anwendung vorhanden ist.

Also zum Beispiel: In der Haupt-App habe ich Button A und B, um die Benachrichtigung zu aktivieren. ich auf den Knopf A klicken, öffnet sich der Showdialog und in der Textbox bereits haben „Knopf A geklickt“ Wenn es Knopf B war die geklickt wurde, sollte es, ich sollte „Sie geklickt Taste B“

So zeigen Ich habe einige zusätzliche Informationen mit dem ShowDialog gesendet, so dass ich das Nachrichtenfenster für jeden verwenden kann. Könnte mir jemand ein bisschen helfen?

Ich muss sagen, ich finde es ein bisschen schwer, anständig zu beschreiben, was ich will, also hoffe ich, ich habe mich klar genug gemacht.

EDIT So hat ich will, ist der Inhalt eines String-Parameter zeigt (um genau zu sein: Properties.Settings.Default.XXX) in die Textbox, die

im Countermessage Fenster ist

Antwort

3

Ich bin nicht ganz sicher, was Sie fragen, aber es klingt wie Sie so etwas wollen. Ich nehme an, dass CounterMessage ein Fenster ist, und dass es einen Bindemechanismus oder eine Eigenschaft gibt, die anzeigt, was die Nachricht ist.

public class CounterMessage : Window 
{ 
    public CounterMessage(string message) 
    { 
     this.Message = message; 
    } 

    public string Message 
    { 
     get; 
     set; 
    } 
} 

Ihre Schaltfläche Ereignis würde dann etwas entlang der Linien der folgenden sein:

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    Button btn = sender as Button; 
    CounterMessage msgOne = new CounterMessage(btn.Text); 
    msgOne.ShowDialog();  
} 

Der Punkt ist, dass Sie, dass der Dialog ist nicht etwas auf die Showdialog-Methode, sondern auf die Klasse schicken selbst. Ich nehme auch an, dass der Dialog mehr als nur die Nachricht anzeigt - andernfalls würden Sie einfach MessageBox.Show(....)

+0

verwenden, was ich will zeigt den Inhalt eines String-Parameters (um genau zu sein: Properties.Settings.Default.XXX) in die Textbox, die im Countermessage-Fenster ist – Dante1986

+0

Ok, also übergebe das stattdessen in die Klasse. Der Punkt ist, dass Sie beim Aufruf von ShowDialog nichts übergeben können - Sie müssen etwas an die zugrunde liegende Klasse (das Fenster) übergeben. –

+0

Kinderbett es zu arbeiten :) danke – Dante1986

0
 Button btn = (Button)sender; 
     Debug.WriteLine(btn.Name);