DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WPFでWPFのボタンを押したことを親に知らせるには

環境/言語:[Windows 7/Vista MS2010 C# Winアプリ]
分類:[.NET]

お世話になります。

WPFでユーザコントロールを作成し幾つかコントロールを配置しさらにボタンを3つ配置しました。(OK、キャンセル、他1つ)
このコントロールは、フォームに張り付けておりフォーム自身にその他コントロールはなくこのコントロール内のOK、キャンセルで終了させたい(閉じる)です。

そこで、「http://msdn.microsoft.com/ja-jp/library/vstudio/ms742215.aspx」を参考にして作成しましたが、
このページ内のコード、真ん中の少し上あたりにある

private void ButtonClicked(object sender, RoutedEventArgs e)
{
MyControlEventArgs retvals = new MyControlEventArgs(true,
txtName.Text,
txtAddress.Text,
txtCity.Text,
txtState.Text,
txtZip.Text);
if (sender == btnCancel)
{
retvals.IsOK = false;
}
if (OnButtonClick != null)      <− ヌルになっているので呼ばない
OnButtonClick(this, retvals);
}

で、一番下の OnButtonClick が null のままなので、フォーム側のコードを呼び出してくれません。
(このページのサンプルをコンパイルした時は、ヌルでなく正しく動作します。現在、これを見てテスト中の私のコードの話です。)

で、サンプルとの相違点は、
1.ユーザコントーロが、public partial class UserControl1 : System.Windows.Controls.UserControlとしていること。

テストとはいえ、ユーザコントロールをほぼ作り上げたので、できればこのままの形で試したい。

public partial class UserControl1 : System.Windows.Controls.UserControl
{
public delegate void MyControlEventHandler(object sender, MyControlEventArgs args);
public event MyControlEventHandler OnButtonClick;
    :
    :

よろしくお願いします。
■No31647に返信(hiroさんの記事)

問題点がよく見えないのですが
フォーム側でイベントを受け取るようにすれば
動くと思いますが駄目なのでしょうか?
フォーム上に直接置いたボタンをクリックしたときの
処理を書くのと同じ考え方です。

DOBON.NET | プログラミング道 | プログラミング掲示板