如何在WPF中操作另一个类的窗口对象

我是WPF和C#的新手。 我知道很多VB.NET,当我调用像textboxes等表单对象时,我习惯了这种方式。我从另一种forms调用它。 现在,我正在使用WPF,我很困惑。 因为我有一个主窗口。 我想从类中添加和添加到主窗口中的列表框。 在VB.Net中,就像这样。

IN FORM2 Form1.Textbox.Text = ""; 

其中我不能在WPF中这样做。 有人可以帮帮我吗。 谢谢!

在XAML中定义的WPF窗口可以从其他类和表单公开访问它们的控件,除非您使用x:FieldModifier属性将它们专门标记为私有。

因此,如果您在另一个类中创建主窗口的实例,无论是Window还是其他任何类,您都可以从第二个类中填充控件。

特定情况是,您希望从已在其上打开的子窗口更新主窗口中控件的内容。 在这种情况下,您可以将子窗口的Owner属性设置为当前主窗口,以便在子窗口可见时访问它。 例如,假设您已经定义了这两个窗口:

 // MainWindow       

 // AnotherWindow      

每个都在自己的XAML文件中。

MainWindow的代码后面,在按钮单击处理程序中,您将AnotherWindow的实例显示为对话框,并将其Owner属性设置为MainWindow的实例:

 private void OpenAnotherWindow_Click(object sender, RoutedEventArgs e) { AnotherWindow anotherWindow = new AnotherWindow(); anotherWindow.Owner = this; anotherWindow.ShowDialog(); } 

现在,您可以从AnotherWindow的Owner属性访问MainWindow的实例,以便在AnotherWindow的代码后面的按钮单击处理程序中向其上定义的ListBox控件添加一个新项:

 private void AddNewItem_Click(object sender, RoutedEventArgs e) { MainWindow mainWindow = Owner as MainWindow; mainWindow.mainListBox.Items.Add(new Random().Next(1000).ToString()); } 

它只是向ListBox添加一个新的随机数,以显示代码如何访问和修改MainWindow控件的数据。

纯WPF解决方案,但在您的情况下也可能是最简单的, 在WPF中使用数据绑定 。

每个表单的控件都绑定到ModelView上的某些数据(纯MVVM方法)或数据(或多或少像yuo可以在WindowsForms中执行)。 因此,您必须做的“唯一”事情是读取/写入绑定到该窗体的UI上的控件的数据。

例如,您在Windows上有TextBox并希望从中读取数据。 此TextBox绑定到类的某个string属性,该属性负责保存该表单上的控件的数据(仅举例来说,在现实世界中可能有1000个其他解决方案,基于开发人员的决策)。 所以你需要的, 不是说:“窗口给文本框”和阅读TextBox's内容后,只需读取绑定的string属性。

当然,这是一个非常简单的描述。 但只是给你一个提示。 按照上面提供的数据绑定链接了解有关此内容的更多信息。 不要害怕那里的很多东西,毕竟这不是一个复杂的想法,而且非常直观。 为了使这些东西在简单的情况下工作,你不需要我做出巨大的努力。 当你最终进入真实世界的应用程序时,这些东西变得非常复杂。

这将获得所有活动窗口:

 foreach (Window item in Application.Current.Windows) { }