WPF, обновление строки состояния в главном окне из UserControl - PullRequest
5 голосов
/ 11 августа 2010

У меня есть StatusBar в моем главном окне, и у меня также есть копия UserControl в моем главном окне.Из обработчиков событий в моем UserControl я хочу обновить StatusBar в главном окне.Что было бы лучшим способом сделать это?Есть ли способ получить доступ к экземпляру моего главного окна из object sender или RoutedEventArgs e в обработчике событий в UserControl?

Редактировать: благодаря В ответе Лукаса и на этот урок я нашел следующее решение:

Добавлено в мои UserControl:

public delegate void UpdateStatusBarEventHandler(string message);

public event UpdateStatusBarEventHandler UpdateStatusBar;

Добавлено в мои главные окнаконструктор, после InitializeComponent:

uct_requiredFields.UpdateStatusBar += updateStatusBar;

И я добавил этот метод в свое главное окно:

private void updateStatusBar(string message)
{
    sti_mainStatus.Content = message;
}

Затем из моего UserControl я могу сделать следующееобновить строку состояния:

if (null != UpdateStatusBar)
{
    UpdateStatusBar("woot, message");
}

1 Ответ

5 голосов
/ 11 августа 2010

Я бы добавил событие в UserControl через мой собственный делегат или определил

public event UpdateStatusBar UpdateBar;

и затем поднимите его нажатием кнопки в UserControl (или другой вещи, которую вы используете)

    private void UserContolButton_Click(object sender, RoutedEventArgs e)
    {
        if(UpdateBar != null)
          UpdateBar(); // send here the message
    }

Я предполагаю, что у вас есть экземпляр UserControl в главном окне в конструкторе

 myUserControl.UpdateBar += MyMethodWhichUpdatesStatusBar();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...