5

メイン ウィンドウにがStatusBarあり、メイン ウィンドウに のコピーもありUserControlます。のイベント ハンドラー内から、メイン ウィンドウのUserControlを更新したいと考えています。StatusBarこれを行う最良の方法は何ですか?のイベント ハンドラから、object senderまたはメイン ウィンドウのインスタンスにアクセスする方法はありますか?RoutedEventArgs eUserControl

編集:ルーカスの答えこのチュートリアルの おかげで、次の解決策を思いつきました:

私のに追加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;
}

次に、 my 内からUserControl、次の操作を実行してステータス バーを更新できます。

if (null != UpdateStatusBar)
{
    UpdateStatusBar("woot, message");
}
4

1 に答える 1

5

自分のデリゲートまたは定義されたものを介してUserControlにイベントを追加します

public event UpdateStatusBar UpdateBar;

次に、UserControl(またはuが使用する他のもの)のボタンクリックを介してそれを上げます

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

contructorのメインウィンドウにUserControlのインスタンスがあると仮定します

 myUserControl.UpdateBar += MyMethodWhichUpdatesStatusBar();
于 2010-08-11T16:51:18.673 に答える