我的许多问题源于我使用MainWindow作为应用程序的主窗口这一事实.我能够轻松地将数据从辅助窗口传递回主窗口,因为我可以在关闭后访问Window1类的属性.但是,要从MainWindow转移到Window2,我必须向Window2的构造函数添加一个参数,这将使我能够传递必要的值.
虽然这适用于一个小应用程序,但我认为,对于需要传递给Window2的更多内容,这将变得非常冗长/混乱.另外,我根本不知道如何从Window2访问我在MainWindow上声明的任何方法.由于MainWindow是主屏幕,因此我的大多数编码都在同类中.
>如何从Window2访问我在MainWindow中放入的方法?
(为了澄清)我花了一些时间环顾四周,找不到专门涉及MainWindow的明确示例,并且需要访问其中的变量/方法.
这是我的C#代码(我试图有明确的变量名称).程序的要点是,您可以在表单1上存储一些数据,然后在单击按钮时将其传递给表单2.从这里开始,它可以根据用户的意愿进行修改,然后在表单2关闭时可以从表单1再次访问它.
在这个例子中,我只是表明我已经找到了一种从表单到表单传输数据的方法,但我确信有更好的方法.具体来说,我确信有一种更好的方法,而不是可能为Window2类编码具有不同参数的不同构造函数.
namespace Banking_System { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void btnSwitchForm_Click(object sender,RoutedEventArgs e) { string strForm1Text = txtForm1TextBox.Text; Window2 newWindow = new Window2(strForm1Text); newWindow.ShowDialog(); txtForm2TextBox.Text = newWindow.strForm2Text; } } }
第二个WPF窗口代码:
namespace Banking_System { public partial class Window2 : Window { public string strForm2Text { get; set; } public Window2(string form1) { InitializeComponent(); txtForm1.Text = form1; } private void btnSwitchBack_Click(object sender,RoutedEventArgs e) { strForm2Text = txtForm2TextBox.Text; this.Close(); } } }
我是否会更好地创建另一个WPF窗口,并在MainWindow加载后立即加载,然后隐藏MainWindow并“假装”另一个窗口是主屏幕?因为那时我可以以与上面相同的方式访问属性(从Window2转移到MainWindow时).
即.当需要从另一个窗口访问变量/方法时,只需声明一个新的临时窗口并访问它的属性/方法:
FakeMainWindow wndPrimary = new FakeMainWindow(); wndPrimary.strProperty= "test"; wndPrimary.methodCall();
这种方式对我来说的主要吸引力在于我可以访问另一个窗口上的方法(如上图所示),这是我在使用MainWindow作为主要表单时无法做到的.
>如何从Window2访问我在MainWindow中放入的方法?
>创建另一个WPF窗口并假装它是我的“主屏幕”以便我可以轻松访问其属性更好吗?
>如果没有,是否有更好的方式与MainWindow合作?
如果我遗失了什么,请告诉我.谢谢!