首页 新闻 会员 周边 捐助

在wpf中frame内的Page页面的控件要怎么关闭窗口

0
[已解决问题] 解决于 2015-09-20 21:55

在wpf中frame内的Page页面中有一个按钮,要怎么实现点击这个按钮关闭整个窗口,使用的委托貌似也不行。 

//page页面代码
public delegate void MyDelegate(object sender, MyEventArgs e);
        public event MyDelegate MyEvent;



  private void button1_Click(object sender, EventArgs e)
        {
            MainWindow fm = new MainWindow ();//
            MyEventArgs me=new MyEventArgs();//自定义的事件数据类实例;
            me.MyValue=true          //将值传过去
            this.MyEvent += new MyDelegate(fm .CloseWindow); //
            MyEvent(this,me);       //执行事件;          
        }
    }
    public class MyEventArgs:EventArgs
    {
        public bool MyValue=false;
    }
}

//主窗体代码

  public void CloseWindow(object sender, MyEventArgs e)
        {
            if(e.MyValue)
             {
               this.close();
               return;
             }
        }
WPF
Opiece的主页 Opiece | 初学一级 | 园豆:195
提问于:2015-09-10 10:59
< >
分享
最佳答案
0

MainWindow fm = new MainWindow ();// 这里不能 new,应该是使用已经存在的 MainWindow 实例。

奖励园豆:5
Launcher | 高人七级 |园豆:45050 | 2015-09-10 11:24

但是使用this.parent无法获得

Opiece | 园豆:195 (初学一级) | 2015-09-10 14:58

@Opiece: 为啥无法获得?为啥要用 this.parent 去获得?

Launcher | 园豆:45050 (高人七级) | 2015-09-10 15:01

@Launcher: 不是先获得父窗口,然后在获得父窗口的控件吗

Opiece | 园豆:195 (初学一级) | 2015-09-11 16:40

@Opiece: 那你得给我解释清楚啊,如果 this.parent 就是你说的“点击这个按钮关闭整个窗口”中的“整个窗口”,那么“但是使用this.parent无法获得”中说指的“无法获得”究竟是无法获得啥?

Launcher | 园豆:45050 (高人七级) | 2015-09-11 16:48

@Launcher: 不好意思,那我说明白点,就是在page页面的按钮上,当我点击时,需要把整个窗口关闭,假设我点击后把一个关闭的标志值传给主窗口me.MyValue=true在主窗口中我就接收这个传过来的值,并执行关闭,但是这样也无法关闭窗口

public void CloseWindow(object sender, MyEventArgs e)
        {
            if(e.MyValue)
             {
               this.close();
               return;
             }
        }

还有一种思路就是,我在page页面去获得主窗口的控件,然后去触发在主窗口上关闭按钮的点击事件把窗口关闭。当我使用this.parent获得的是为null,有没有其他的办法去获得主窗口上关闭的按钮的控件?

Opiece | 园豆:195 (初学一级) | 2015-09-11 17:23

@Opiece: this.Owner

Launcher | 园豆:45050 (高人七级) | 2015-09-11 18:02

@Launcher: this.Owner是继承自system.window,在page页上没有这个属性

Opiece | 园豆:195 (初学一级) | 2015-09-14 08:50

@Launcher: 使用Application.Current.Windows可以获得窗口的集合,然后遍历获得窗口中控件就可以了,还是要谢谢你

Opiece | 园豆:195 (初学一级) | 2015-09-20 21:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册