我有一个MVVM C#/WPF应用程序。我想将一个XamDataGrid绑定到我的一个视图模型上,这样用户就可以定义他们想要的结果结构--哪一列映射到哪一个变量。
我的核心包含这样的字典- Dictionary<string, string>,我希望将它包装在ObservableCollection中并绑定到它,而不是将数据复制到DataTable。问题是,我不能以这种方式添加行(视图似乎被锁定,无法添加),并且更改不会保存。我的代码:
<igDP:XamDataGrid
Grid.Row="1" Grid.Column="0"
Name="resultStructure"
DataSource="{Binding VariablesDictionary, Mode=TwoWay}"
GroupByAreaLocation="None">
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings
AllowFieldMoving="WithinLogicalRow"
AllowAddNew="True"
AllowDelete="True"
AddNewRecordLocation="OnBottomFixed" />
</igDP:XamDataGrid.FieldLayoutSettings>
</igDP:XamDataGrid>视图模型(相关部分):
private ObservableCollection<DictionaryEntry> variablesDictionary;
public ObservableCollection<DictionaryEntry> VariablesDictionary
{
get { return variablesDictionary; }
set
{
variablesDictionary = value;
OnPropertyChanged(()=>VariablesDictionary);
}
}..。
List<DictionaryEntry> vars = resultStructureModel.Variables.Select(x => new DictionaryEntry {Key = x.Key, Value = x.Value}).ToList();
VariablesDictionary = new ObservableCollection<DictionaryEntry>(vars);发布于 2012-11-19 14:18:21
最终起作用的是使用BindingList。ObservableCollection不允许您添加行,但是BindingList确实提供了我需要的一切。
发布于 2012-11-15 22:19:34
对于添加行,XamDataGrid使用IEditableCollectionView.CanAddnew或IBindingList.AllowNew。
如果您使用ListCollectionView作为网格的DataSource,那么您可以添加新行。
要将ListCollectionView与ObservableCollection一起使用,请将ObservableCollection传递给ListCollectionView,然后使用CollectionView绑定到网格。
https://stackoverflow.com/questions/13393979
复制相似问题