我一直在关注这个问题/阅读这个问题已有一段时间了,还没有找到答案。希望你们能帮忙。
我有一个类型字符串的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方法(上面)编辑集合,并查看列表框中的更改/编辑。删除/添加工作正常,但是当我在网格单元格内编辑一个字符串并且它失去焦点时,该字符串将恢复到原来的状态,并且永远不会更新。
非常感谢任何帮助/建议。
答案 0 :(得分:3)
我发现了这个问题,遗憾的是它没有答案。所以我不能把这个答案留空。
以下是我找到的答案:
DataGrid无法通过添加,编辑或删除字符串来更新字符串集合。
我找到了一个解决方法,将字符串包装在StringWrapper对象中。在这里。
public class StringWrapper { public string Text {get;组; } }
我不喜欢回答。
原问题提问者,moncadad,看起来他想要一列DataGrid。他可能只想在没有大量代码的情况下从ObservableCollection中添加和删除字符串。编辑可能不太重要,因为可以通过删除再次添加来完成。
我最终使用一个名为StringListBox的可重用用户控件自己做了这个。
A ListBox for strings that supports add and delete
基本上,我们的想法是使用Label,ListBox,TextBox和Add按钮创建DataGrid的外观,因为这是一个控件,它必须在一个控件中使用ObservableObject或List。
这会给你添加和删除。我不提供编辑。
希望这有助于下一个人。
答案 1 :(得分:0)
实际上它可行,你应该只使用
Mode=OneWay
在您的装订中。
我希望这有帮助!