对于我的生活,我无法找到解决方案。 我有一个类设置,可以做几件事,其中一件事就是对windows做某些事情。其中一个是MainWindow.xaml
如果从OtherClass.cs中调用方法,我希望它关闭MainWindow.xaml。
基本上:我想访问已经实例化的窗口的代码隐藏中的方法。
在Mainwindow.xaml.cs中,我试图从OtherClass调用:
public void CloseNow()
{
This.Close();
}
但是要访问MainWindow.xaml.cs中的任何成员,我需要将其共享,但这样做会使其无法对窗口执行任何操作(MainWindow.xaml)。
我可能会忽视一些事情,但我似乎无法注意到它。 有人会如此善良地向我展示一种处理这种情况的方法吗?
PS我在WPF工作。
澄清一下,这是对其中一个答案的评论:
我要做的是在另一个类中运行一个命令,该类是WPF窗口的公共成员。该窗口已经实例化并显示。我只是想访问它的公共成员,所以为了方便起见,我可以从另一个类操作窗口。我的这个OtherClass.cs是一个处理控制台动作的类。控制台是位于MainWindow.xaml.cs中的自定义控件。当用户键入例如:/ close时,我希望MainWindow.xaml关闭,但不仅如此,因为将来我想添加更多功能。
答案 0 :(得分:2)
在您的OtherClass中,添加以下方法以关闭主窗口。
public void CloseMainWindowNow()
{
var mainWindow = (Application.Current.MainWindow as MainWindow);
if (mainWindow != null)
{
mainWindow.Close();
}
}
答案 1 :(得分:0)
代表们可以帮助您。 Windows窗体中的代码:
Form1中:
public partial class Form1 : Form
{
Form2 form2;
public Form1()
{
InitializeComponent();
form2 = new Form2(Closing);
}
private void button1_Click(object sender, EventArgs e)
{
form2.ShowDialog();
}
private void Closing()
{
this.Close();
}
}
窗体2:
public partial class Form2 : Form
{
public delegate void Close();
Close close;
public Form2(Close close)
{
InitializeComponent();
this.close = close;
}
private void button1_Click(object sender, EventArgs e)
{
close();
}
}
因此,当您按下form2上的button1时,它将使用方法close(),解冻是从form1委派的,因此它将使用方法Closing on form1并关闭form1。
答案 2 :(得分:0)
class OtherClass
{
private MainClass mainClass;
public OtherClass(MainClass mainClass)
{
this.mainClass = mainClass;
}
}
然后你可以在OtherClass中调用mainClass的任何方法。在您的情况下,MainClass是您的MainWindow.Xaml.cs
在MainWindow.Xaml.cs中你必须创建Otherclass otherClass = new OtherClass(this);