我画了一条点线。我想让用户编辑这些点。为此,我将ObservableCollection<Point>
绑定到DataGrid
(X,Y列)(实际上是DataPoint
因为我正在使用库,但它仍然是Struct
)。
问题在于,因为我绑定了一个struct而struct并不意味着要改变我正在修改我的集合的副本而不是集合本身。我想切换到普通的类,X,Y属性暴露但我不能。 我怎么能绑定到struct的集合并修改该集合? 感谢。
如果不可能,我如何定位DataGrid的VIEW值,以便运行循环来填充新的List,然后用我的新List中的项替换我的第一个ObservableCollection。
myDataGrid.Items
不是我想要的,因为它代表原始数据,而不是我DataGrid
单元格中的真实数据。
答案 0 :(得分:2)
结构是值类型。所以基本上如果你访问它们就会得到一份副本。
这意味着对于点,您只能通过调用构造函数来覆盖它们并分配新值:
yourPoint = new Point(xNew, yNew);
对于DataBinding,您始终必须使用Property。你可以为它定义一个包装结构的类。
我希望这已经有所帮助。另外,您还可以查看此struct tutorial。