2011-04-30 89 views
1

我已經綁定了不同的東西/在這個問題上閱讀了一段時間,並且還沒有找到答案。希望你們能幫忙。雙向綁定一個ObservableCollection <string>到WPF DataGrid

我有一個string類型的observablecollection。我想將這個集合綁定到一個數據網格,並且能夠編輯/刪除/添加到集合中。這裏是我的xaml:

<DataGrid ItemsSource="{Binding Movies.Titles}" CanUserDeleteRows="True" CanUserAddRows="True" Height="300"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}"/> 
    </DataGrid.Columns> 
</DataGrid> 

相同的observablecollection也綁定到列表框。我希望能夠使用上面的datagrid方法編輯集合並查看列表框中的更改/編輯。刪除/添加工作正常,但是當我編輯網格單元格內的字符串並失去焦點時,字符串會回到原來的狀態,並且永遠不會更新。

非常感謝任何幫助/建議。

回答

3

哇,我昨天去做這件事,並被卡住了一個DataGrid,它會爲我的ObservableCollection添加一個新行。經過研究,我意識到了爲什麼。字符串和不可變的。

我發現這個問題,不幸的是它沒有答案。所以我不能留下這個答案。

所以這裏我找到了答案:

  1. DataGrid中不能添加,編輯或刪除字符串更新字符串集合。

  2. 我找到了一個解決方法來將字符串包裝在StringWrapper對象中。這裏是。

    public class StringWrapper { public string Text {get;組; } }

我不喜歡任何一個答案。

最初的問題提問者,moncadad,看起來他想要一列DataGrid。他可能只是想在沒有大量代碼的情況下從ObservableCollection中添加和刪除字符串。編輯可能不是太重要,因爲可以通過刪除並再次添加來完成。

我最終自己做了一個可重用的usercontrol,我叫做StringListBox。

A ListBox for strings that supports add and delete

基本的想法是創建一個標籤,一個列表框,一個文本框和一個Add按鈕,一個DataGrid的外觀和因爲這是一個控制,它有一個與ObservableObject或列表工作控制。

這給你添加和刪除。我沒有提供編輯。

希望這有助於下一個傢伙。

0

其實一切正常,你應該只使用

Mode=OneWay 

在你的綁定。

我希望這有助於!