2012-03-21 80 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