1

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

问题是,当我绑定到一个结构并且结构并不意味着要更改时,我正在修改我的集合的副本而不是集合本身。我想切换到暴露 X,Y 属性的普通类,但我不能。我怎样才能绑定到结构集合并修改该集合?谢谢。

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

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

4

1 回答 1

2

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

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

yourPoint = new Point(xNew, yNew);

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

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

于 2013-07-26T22:53:50.890 回答