WPF,从UserControl中更新主窗口中的状态栏

时间:2010-08-11 16:19:37

标签: c# wpf user-controls event-handling statusbar

我的主窗口中有一个StatusBar,我的主窗口中还有UserControl的副本。在UserControl中的事件处理程序中,我想更新主窗口中的StatusBar。这样做的最佳方式是什么?有没有办法在object sender的事件处理程序中RoutedEventArgs eUserControl访问我的主窗口实例?

修改:感谢lukas's answerthis tutorial,我提出了以下解决方案:

添加到我的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 个答案:

答案 0 :(得分:5)

我会通过我自己的委托或定义

向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();