2013-07-26 24 views
1

我有一個用點繪製的線條。我希望允許用戶編輯這些點。爲此,我已將ObservableCollection<Point>限制爲DataGrid(X,Y列)(實際上是DataPoint,因爲我正在使用庫,但它仍然是Struct)。綁定到結構體

問題是,因爲我綁定到結構和結構並不意味着被改變我正在修改我的集合的副本,而不是集合本身。我想切換到一個正常的類,X,Y屬性暴露,但我不能。 我怎樣才能綁定到一個結構的集合,並獲得修改集合? 謝謝。

如果這是不可能的,我該如何定位DataGrid的VIEW值,以便運行一個循環來填充一個新List,然後用來自該新List的項目替換我的第一個ObservableCollection。

myDataGrid.Items不是我要找的,因爲這代表原始數據,而不是我的DataGrid的單元格中的實際數據。

+0

您是否考慮使用立面圖案?這種模式可以用來輕鬆克服困難... –

回答

2

結構是值類型。所以基本上如果你訪問他們,你會得到一份副本。

這意味着爲點,你只能通過調用構造覆蓋它們,並指定新值:

yourPoint = new Point(xNew, yNew); 

數據綁定,你總是要使用屬性。你可以爲這個包裝你的結構的類定義一個類。

我希望這已經有所幫助。否則你也可以看看這struct tutorial