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 sender
或RoutedEventArgs 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,从用户控件中更新主窗口中的状态栏的主要内容,如果未能解决你的问题,请参考以下文章