2012-01-17 14 views

答えて

15

あなたができることは、2番目のウィンドウを開く前に、メインウィンドウを所有者として割り当て、次にモーダルウィンドウからOwnerプロパティを呼び出してMainWindowオブジェクトにキャストし、メソッドを実行できるようにします。

// Code in main window 
ModalWindow window = new ModalWindow(); 
window.Owner = this; 
window.ShowDialog() 

//Code on the modal window 
var myObject = this.Owner as MainWindow; 
myObject.MyMethod(); // Call your method here. 
+0

を呼び出す前に、コンストラクタまたはパブリックプロパティにそれを渡し、モーダルに親からの情報を渡すことであれば、「示されていないウィンドウにOwnerプロパティを設定できませんが以前は "。それは、window.Owner ShowDialogの前にすることはできません... – pzogr

2

これを実行する方法はたくさんあります。

モーダルウィンドウのコンストラクタをオーバーロードして、その関数またはメインウィンドウへの参照を渡すことができます。または、そのウィンドウにプロパティを追加します。

モーダルウィンドウを表示するメインウィンドウコードの次の行でタイマーを開始することもできます。

2
  • これはのは、それがこのコールの後にコードを追加するだけで十分だし、それが後に実行されます

    modalWindow.ShowDialog()

    を言わせように、このモデルウィンドウは、MainWindowから開かれます場合はモーダルウィンドウが閉じられました。

  • モーダルウィンドウがcomplitely関係のない部分のコードを実行する必要があり、フォーム他のどこかが、決算上を開いている場合は、使用することができ、例えば、CommandsまたはRelayCommand(直接デリゲート呼び出しの一種)。

は、この情報がお役に立てば幸いです。

0

モーダルダイアログの「閉じる」イベントにイベントハンドラをアタッチすることができます。これは、ダイアログがこのイベントを発生させたときにメインプログラムで実行されます。

5
public class ModalWindow : Window 
{ 
    private MainWindow _parent; 
    public ModalWindow(MainWindow parent) 
    { 
     _parent = parent; 
     Owner = parent; 
    } 

    void CallParent() 
    { 
     _parent.Call(); 
    } 
} 

私はこの種のパターンがコードのにおいであることを示唆しています。

モーダルから親に情報を渡すことを目標とする場合は、モーダルウィンドウのプロパティを公開し、閉じた後でそれらの値を読み取り、親で必要なアクションを実行します。

あなたの目標は、私はこの取得ShowDialog().

関連する問題