代码之家  ›  专栏  ›  技术社区  ›  Sarah Vessels

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

  •  5
  • Sarah Vessels  · 技术社区  · 14 年前

    我有一个 StatusBar 在我的主窗口,我还有一份 UserControl 在我的主窗口。在我的 用户控件 ,我想更新 状态栏 在主窗口中。最好的办法是什么?有没有一种方法可以从 object sender RoutedEventArgs e 在中的事件处理程序中 用户控件 ?

    编辑: 多亏了 lukas's answer this tutorial

    用户控件 :

    public delegate void UpdateStatusBarEventHandler(string message);
    
    public event UpdateStatusBarEventHandler UpdateStatusBar;
    

    添加到主窗口的构造函数 InitializeComponent :

    uct_requiredFields.UpdateStatusBar += updateStatusBar;
    

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

    然后,从我的内心 ,我可以执行以下操作来更新状态栏:

    if (null != UpdateStatusBar)
    {
        UpdateStatusBar("woot, message");
    }
    
    1 回复  |  直到 8 年前
        1
  •  5
  •   Lukasz Madon    14 年前

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

    public event UpdateStatusBar UpdateBar;
    

    然后通过用户控件(或者你使用的其他东西)中的按钮点击来提升它

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

    承包商

     myUserControl.UpdateBar += MyMethodWhichUpdatesStatusBar();