如何从两个窗口访问一个类 (C# WPF)

本文关键字:一个 WPF 访问 两个 窗口 | 更新日期: 2023-09-27 18:36:28

我有两个windows(MainWindow,SecondWindow),一个class (ExampleClass) ExampleClass两个strings (Name,SecondName)和方法,messagebox应该包含来自Name + SecondName变量的文本。

所以我想从MainWindow添加一些文本到字符串ExampleClass Name然后从打开的SecondWindow添加一些文本到字符串ExampleClass SecondName。之后,我想单击MainWindow按钮,这应该让我messagebox两个字符串

Name + SecondName

主窗口 :

  ExampleClass SomeClass = new ExampleClass();
  SomeClass.Name = MainWindowTxtBox.Text;

第二个窗口 :

ExampleClass SomeClass = new ExampleClass();
SomeClass.SecondName = SecondWindowTxtBox.Text;

这将只为一个窗口创建新的类,是否可以为两个窗口创建 istance?

如何从两个窗口访问一个类 (C# WPF)

你可以

像这样使用static

class ExampleClass
{
    public static string Name { get; set; }
    public static string SecondName { get; set; }
    public static void print()
    {
        MessageBox.Show(Name + SecondName);
    }
}

然后在MainWindow

ExampleClass.Name = MainWindowTxtBox.Text;

SecondWindow

ExampleClass.SecondName = SecondWindowTxtBox.Text;

最后:

ExampleClass.print();

是的,这是可能的。但是一个类需要知道另一个类。像这样尝试:

Class1
{
  public ExampleInstance Instance { get; set; }
  //Create your Class2 object here with Class2 SecondClassObject = new Class2(this)
}
Class2
{
  private Class1 MyCreator;
  public Class2(Class1 Creator)
  {
    this.MyCreator = Creator;
  }
  //Now you can use the object with: MyCreator.Instance
}

希望这有帮助。

然后,

您应该在主应用程序而不是窗口中创建类的实例。

创建一个单例 (https://msdn.microsoft.com/en-us/library/ff650316.aspx):

public class ExampleClass
{
    public string Name { get; set; }
    public string SecondName { get; set; }
    protected ExampleClass() {
    }
    static ExampleClass _instance;
    public static ExampleClass Instance {
        get {
            return _instance ?? (_instance = new ExampleClass());
        }
    }
}

您的代码将如下所示:

主窗口

 ExampleClass.Instance.Name = MainWindowTxtBox.Text;

第二个窗口

 ExampleClass.Instance.SecondName = SecondWindowTxtBox.Text;