【问题标题】:WPF, updating status bar in main window from within UserControlWPF,从用户控件中更新主窗口中的状态栏
【发布时间】:2011-03-28 11:51:56
【问题描述】:

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

编辑:感谢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");
}

【问题讨论】:

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


    【解决方案1】:

    我会通过我自己的委托或定义向 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多