Текстовое поле WPF showdialog с содержимым var

Я пытаюсь сделать следующее:

Приложение WPF, в котором у меня есть несколько кнопок, где вы можете установить уведомление. В зависимости от кнопки можно установить разные сообщения.

То, что я сделал, было на кнопке сообщения, я поставил этот код:

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

Это откроет новое окно WPF, здесь только текстовое поле и кнопка выхода. При выходе из этого окна сообщения оно будет сохранено в параметре.

Но вот в чем хитрость. Я хочу использовать это окно сообщения для нескольких уведомлений, и оно будет отображать в текстовом поле любое текстовое содержимое, если оно уже есть в строке в приложении.

Так, например: в основном приложении у меня есть кнопки A и B, чтобы включить уведомление. Я нажимаю кнопку A, появляется диалоговое окно showdialog, и в текстовом поле уже есть «вы нажали кнопку A». Если была нажата кнопка B, она должна отображать «вы нажали кнопку B».

Поэтому я должен отправить дополнительную информацию с помощью ShowDialog, чтобы я мог использовать окно сообщений для каждого из них. Может ли кто-нибудь помочь мне немного здесь?

Я должен сказать, что мне немного сложно прилично описать то, что я хочу, поэтому я надеюсь, что выразился достаточно ясно.

РЕДАКТИРОВАТЬ Итак, я хочу, чтобы отображалось содержимое строкового параметра (точнее: Properties.Settings.Default.XXX) в текстовое поле, которое находится в окне Countermessage.


person Dante1986    schedule 04.04.2012    source источник


Ответы (1)


Я не совсем уверен, о чем вы спрашиваете, но похоже, что вы хотите что-то вроде этого. Я предполагаю, что CounterMessage является окном и что существует какой-то механизм привязки или свойство, которое отображает сообщение.

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

    public string Message
    {
        get;
        set;
    }
}

Тогда событие вашей кнопки будет выглядеть примерно так:

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

Дело в том, что вы не отправляете что-то методу ShowDialog, а скорее классу, который является самим диалогом. Я также предполагаю, что диалоговое окно делает больше, чем просто отображает сообщение - в противном случае вы просто использовали бы MessageBox.Show(....)

person Wonko the Sane    schedule 04.04.2012
comment
я не хочу показывать содержимое строкового параметра (точнее: Properties.Settings.Default.XXX) в текстовое поле, которое находится в окне Countermessage. - person Dante1986; 04.04.2012
comment
Хорошо, тогда передайте это в класс вместо этого. Дело в том, что вы не можете передать что-то в вызове ShowDialog — вам нужно передать что-то базовому классу (окну). - person Wonko the Sane; 04.04.2012