2

まず、この投稿を読むために時間を割いていただきありがとうございます。

私の質問に直行させてください。

WPFページが閉じられる前に閉じられているかどうかを確認する方法はありますか?つまり、ある種のPreviewClosingイベントですか?Unloadedイベントがあることに気づきましたが、ページを閉じる前に何かをトリガーする必要があります。

私のアプリケーションにはウィンドウがあります。ウィンドウの本体にはフレームが含まれ、フレームはページに移動するために使用されます。

WPFウィンドウXAML

<Grid>
    <Frame x:Name="_mainFrame" />
</Grid>

C#はウィンドウフレームをSpecEditorという名前のページに移動します

_mainFrame.Navigate(new SpecEditor(customerDetails));

ホスティングウィンドウが閉じようとしているときにSpecEditorページでイベント(つまり、PreviewClosingイベント)をトリガーする方法が必要です。これにより、さまざまなチェックを実行できます。主に、保存されていない作業を保存するようにユーザーに促すため。

ページにPreviewClosingまたはPreviewUnloadedイベントがないように見えるので、これを回避する方法についてのアイデア。

お時間をいただき、誠にありがとうございます。

****編集**** ** _ _ _ _

さて、私は何が必要かを理解することができました。

メインウィンドウで、PreviewClosingイベントを割り当てます。

private void RadWindow_PreviewClosed(object sender, WindowPreviewClosedEventArgs e)
    {
    }

メインウィンドウの「フレーム」にアクセスするには、次を使用できます(フレームに_mainFrameという名前を付けたことに注意してください)。

this._mainFrame.Content

私の場合、フレームでホストされているページの名前は「SpecEditor」で、ドッキングコントロールが含まれています。したがって、私のページのコンテンツにアクセスするには、次のようにします。

((SpecEditor)this._mainFrame.Content).radDocking

フレームのコンテンツ(ページ)をカスタムページクラス(SpecEditor)にキャストし、ドッキングコントロールなどのコンテンツにアクセスできるようにします。

コーディングを適切に行うには、フレームのコンテンツが実際にキャストしようとしているページであることを確認する価値があります。あなたはそのようにこれを行うことができます:

if (this._mainFrame.Content is SpecEditor)
    {
      ((SpecEditor)this._mainFrame.Content).radDocking
      .... etc etc
    }

これがお役に立てば幸いです。

4

1 に答える 1

-1

フレームを実際に使用している場合は、次の投稿に別のアプローチが示されてい ます。

作成者は、フレームのナビゲーション機能にイベントを使用します。

于 2015-07-01T20:04:20.493 に答える