WPF,从用户控件中更新主窗口中的状态栏

Posted

技术标签:

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

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

编辑:感谢lukas's answer 和this 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】:

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

【讨论】:

以上是关于WPF,从用户控件中更新主窗口中的状态栏的主要内容,如果未能解决你的问题,请参考以下文章

从用户控件WPF调用主窗口中的公共功能

WPF StatusBar控件

WPF用户控件嵌套控件-从用户控件切换用户控件

从用户控件中导航WPF选项卡控件?

wpf中用户控件更改期间的动画

WPF 将对象从窗口的用户控件传递到另一个窗口的用户控件