2012-03-21 77 views
1

我很抱歉發佈此問題,因爲這裏有很多相關主題,但不幸的是他們都不能幫助我!所以我有一個包含兩個WPF窗口(MainWindow()和Window1())的應用程序,我真正想要實現的是從MainWindow()控制窗口1屬性(例如..我想清除列表框項目從window1每次我從MainWindow點擊Button1!我還想要完全訪問從window1中的MainWindow中退出的方法,字段和屬性。使用c#使用多個wpf窗口#

回答

2

你可以做的是添加公共屬性/方法,允許從MainWindow訪問Window1類。

舉例來說,如果你想從MainWindow清除Window1列表,下面的方法添加到Window1

public void ClearList() 
{ 
    // Clear your list here 
} 

當然,你需要你的MainWindow瞭解Window1,但正如其名建議,我假設MainWindow是主窗口,所以它創建了Window1實例。

因此,您應該參考MainWindow中的Window1。在MainWindow,只需撥打電話:

this.myWindow1.ClearList(); 
+0

所以像我不必在MainWindow中創建Window1的引用,如windwo1 wind = new window1()? – Iyad009 2012-03-21 10:57:18

+0

你必須這樣做。如果你不這樣做,你會如何顯示窗口?首先創建你的實例,然後調用你的實例的方法。 – ken2k 2012-03-21 10:58:45

+0

謝謝我會做,當我需要,但ClearList()方法不與我一起工作..當我在window1中實現ClearList(),當我嘗試在Window1.ClearList(主窗口) );它失敗 !! – Iyad009 2012-03-21 11:06:02

1

問題在哪裏?我沒有看到任何問題。

也許你想通過在MainWindow中保存Window1的引用來開始。

Window1 window1 = new Window1(); 
window1.show(); 

從那裏,你需要做的事情:

window1.foo(); 
window1.bar(); 
window1.foobar = "Title"; 

編輯:一些澄清,因爲OP似乎是一個初學者:

public class MainWindow 
{ 

    private Window1 window1; 

    public void CreateWindow() 
    { 
     window1 = new Window1(); 
     window1.show(); 
    } 

    private void DoStuffWithWindow1() 
    { 
     window1.foo(); 
     window1.bar(); 
     window1.foobar = "Title"; 
    } 
} 
+0

是的,我已經做到了,並得到StackOverFlowException! 在*****。exe中發生了類型爲「System.StackOverflowException」的未處理的異常。exe – Iyad009 2012-03-21 10:53:45

+0

哼,你必須在某處遞歸調用。請張貼代碼。你在使用任何事件嗎? – squelos 2012-03-21 11:03:34

+0

不,關於Window1的例外window1 = new Window1(); ps:我將window1聲明爲全局變量! – Iyad009 2012-03-21 11:12:52