我有这两个类:
[Serializable]
public class Level
{
public List<Entity> Entities { get; set; }
public Level()
{
Entities = new List<Entity>();
}
}
[Serializable]
public class Entity
{
public string ID { get; set; }
public string Class { get; set; }
public string TextureName { get; set; }
public int X { get; set; }
public int Y { get; set; }
public Box BoundingBox { get; set; }
}
我想创建一个小型关卡编辑器,我可以在其中将“实体”对象放置在“关卡”对象中。
所以,我想创建一个 Windows 窗体应用程序,并创建一个表示“级别”对象(只有一个实例)的“面板”控件,以及该面板上的“图片框”控件来表示“实体”对象。
当我单击“PictureBox”控件时,我想获取相应的“实体”对象以获取其属性(例如,我可以在“PropertyGrid”中显示)。
我该怎么做?
我尝试创建自定义控件(实现“Level”类的“Panel”和实现“Entity”类的“PictureBox”),但这感觉很混乱,因为第一个总是包含重复的数据(控件和对象分别)。
我还可以创建一个自定义的“PictureBox”控件,只保存一个“实体”对象的 ID,并创建搜索相应“实体”的方法。
我目前正在研究 model-view-controller 和 model-view-presenter 架构,只是为了了解如何解决问题(例如,通过 Id 进行查找),但我不需要严格分离现在的 UI 和数据。
任何帮助深表感谢。