绑定到结构

本文关键字:结构 绑定 | 更新日期: 2023-09-27 18:25:10

我用点画了一条线。我希望允许用户编辑这些点。为此,我将ObservableCollection<Point>绑定到DataGrid(X,Y列)(实际上是DataPoint,因为我使用的是库,但它仍然是Struct)。

问题是,由于我绑定到一个结构,而结构并不意味着要更改,所以我修改的是集合的副本,而不是集合本身。我想切换到一个公开了X,Y属性的普通类,但我做不到。如何绑定到结构的集合并修改该集合?谢谢

如果这不可能,我如何以DataGrid的VIEW值为目标,以便运行一个循环来填充一个新的List,然后用该新List中的项目替换我的第一个ObservableCollection。

myDataGrid.Items不是我想要的,因为它代表的是原始数据,而不是DataGrid单元格中的真实数据。

绑定到结构

结构是值类型。所以基本上,如果你访问它们,你就会得到一份副本。

这意味着对于点,您只能通过调用构造函数并分配新值来覆盖它们:

yourPoint = new Point(xNew, yNew);

对于DataBinding,您必须始终使用Property。您可以为此定义一个类,该类正在包装您的结构。

我希望这已经有所帮助。否则,您也可以查看此结构教程。