5

コンストラクターで、MainWindowイベント ハンドラーを登録しています。

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        pageViewDocText = new PageViewDocText();
        framePageDocFieldDetail.Content = pageViewDocText;
        pageViewDocText.NewPageIRPRO += new GabeLib.SearchCls.DocEventHandler(ViewIPRO);
    }

    protected void ViewIPRO(string IRPOlink) // ...
}

public partial class PageViewDocText : Page, INotifyPropertyChanged
{
    public event GabeLib.SearchCls.DocEventHandler NewPageIRPRO;

    private void btn_PageBreakNext(object sender, RoutedEventArgs e)
    {
        // this fires but NewPageIRPRO is null
        if (NewPageIRPRO != null)
        {
            NewPageIRPRO("dummylink");
        }
    }
}

しかし ではPageViewDocTextNewPageIRPROnull です

私は何を間違っていますか?
からPageViewDocText、 に電話したいですMainWindow.ViewIPRO

このイベント ハンドラーが起動し、pageViewDocText.NewPageIRPRO += の下の行に登録されます。

App.StaticGabeLib.Search.NewDocIRPRO += new GabeLib.SearchCls.DocEventHandler(ViewIPRO);
4

1 に答える 1

1

別のクラス (リストされていない) からイベントを呼び出しているように見えますが、デリゲートがありません。

このコードを試してください:

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        pageViewDocText = new PageViewDocText();
        framePageDocFieldDetail.Content = pageViewDocText;
        pageViewDocText.PageBreakNext += new PageBreakNext(ViewIPRO);
    }

    protected void ViewIPRO(string IRPOlink) // ...
}

public partial class PageViewDocText : Page, INotifyPropertyChanged
{
    public delegate void PageBreakNext(string IRPOlink);
    public event PageBreakNext PageBreak;

    private void btn_PageBreakNext(object sender, RoutedEventArgs e)
    {
        // this fires but NewPageIRPRO is null
        if (PageBreak != null)
        {
            PageBreak("dummylink");
        }
    }
}
于 2013-08-27T03:39:03.287 に答える