C# WPF 想要将数据存储在一个类中,并在不同 wpf 窗口中的多个不同类中使用
Posted
技术标签:
【中文标题】C# WPF 想要将数据存储在一个类中,并在不同 wpf 窗口中的多个不同类中使用【英文标题】:C# WPF Want to store data in a class and use it in multiple different classes in different wpf windows 【发布时间】:2022-01-19 02:28:48 【问题描述】:我有 3 节课。第一个存储信息,第二个将信息分配给第一个班级,第三个从第一个班级读取信息。
第一类,未分配给任何 WPF 窗口
public class ProfileInfo //Used to store Name and Surname Data
public string User_Name get; set;
public string User_Surname get; set;
2nd Class,位于 WPF 窗口 1
public class InsertInfo //Reads data and stores it in Class 1
ProfileInfo p = new ProfileInfo();
p.User_Name = "Bob"; //Example value but normally is read from db
p.User_Surname = "Jhones"; //Example value but normally is read from db
第 3 类,位于 WPF 窗口 2
public class ReadInfo //Reads data from Class 1 and displays it using MessageBox.Show
ProfileInfo p = new ProfileInfo();
MessageBox.Show(p.User_Name); // I want this to display Bob but it displays an empty value
MessageBox.Show(p.User_Surname);
我希望 Class 1 存储信息,直到我结束程序,以便我可以检索多个类中的数据。
据我了解,这不起作用,因为在第 3 类中,我需要一个完全不同的第 1 类实例,其中没有存储数据???如果是这样,我该如何完成这项工作?
我在整个互联网上寻找一种在类之间共享数据的方法,但一切似乎都如此困难且难以理解。我是初学者,所以如果可能的话,请尽量用不太专业的语言来解释它。
【问题讨论】:
如果您在互联网上搜索,您感兴趣的是“单例模式”。 PS:“模式”是常见编程问题的常见解决方案(这种“向所有人提供数据的实例”是您遇到的最常见的事情之一)。不要与“上帝对象”反模式混淆。 所以你想要一个只存储一次信息的对象?查找 C# 静态关键字。静态成员/静态函数... 【参考方案1】:问题是你创建了一个 ProfileInfo
的实例 inside 你的 InsertInfo
类,但是在第三类 ReadInfo
中,你创建了另一个 ProfileInfo
实例,默认情况下,空的。我不知道您系统的详细信息,但您可以尝试将InsertInfo
类中的ProfileInfo
字段设为静态Property,然后您可以从其他类访问它:
public class InsertInfo
private static ProfileInfo p = new ProfileInfo();
public static ProfileInfo P get return p;
public void AssignProfileInfo(string username, string surname)
p.User_Name = username;
p.User_Surname = surname;
然后,要访问存储的 ProfileInfo,您可以访问静态属性:
public class ReadInfo
ProfileInfo p = InsertInfo.P;
public void ShowInfo()
MessageBox.Show(p.User_Name);
MessageBox.Show(p.User_Surname);
【讨论】:
以上是关于C# WPF 想要将数据存储在一个类中,并在不同 wpf 窗口中的多个不同类中使用的主要内容,如果未能解决你的问题,请参考以下文章