在WPF和MVVM中使用DataGrid绑定数据表我是WPF新手,我在WPF中使用MVVM模式并在运行时生成数据表结构,然后绑定数据表使用DataGrid/RadGridView,它按预期工作。问题:我希望DataGrid/RadGridView是可配置的(用户可以添加新行、删除行和编辑其中的数据),单击保存按钮时,所有内容都应保存在数据库中。我有一种情况需要创建一个包含不同列的空数据表(取决于用户输入)。然后在这些栏目下输入值并点击“SaveNeeded”将值保存到数据库中。我能够将DataTable绑定到DataGrid(如果网格中的DataTable中已经存在某些数据,我可以看到所有列名和数据行)但无法在运行时从DataGrid添加(输入)或删除任何行。我为CanUserDeleteRows和CanUserInsertRows设置了“True”值。我不知道我哪里错了。我在我的ViewModel类中实现了INotifyPropertyChanged。我正在努力获得想要的结果。我的代码如下所示:ViewModel–DataTable_manualDataTable;publicDataTableManualDataTable{get{return_manualDataTable;}设置{_manualDataTable=值;OnPropertyChanged("ManualDataTable");}}用于创建DataTable——voidLoadManualDataTable(){DataTabledtData=newDataTable();dtData.Columns.Add("时间戳",typeof(DateTime));列表列=newList();varquery=_dataContext.GetSenData().Where(sen=>sen.LogID==((DataLogs)SelectedItemNode).Logger.LogID).Select(sen=>sen.SeriesID);varqueryTS=_dataContext.GetDataSeries().Where(ts=>query.Contains(ts.SeriesID));foreach(DataSeriestsinqueryTS){varqueryPLoc=_dataContext.GetDataLoc().Where(pLoc=>pLoc.ParamID==ts.ParamID).Select(pLoc=>pLoc.Name);dtData.Columns.Add(queryPLoc.First(),typeof(string));}ManualDataTable=dtData;XAML代码-DataTable是按预期创建的(来自LoadManualDataTable方法),如果我将通过代码添加任何行,那么这些行将被绑定并显示在DataGrid中。但我无法通过DataGrid创建或删除行。任何帮助将不胜感激。提前致谢!我创建了一个简单的测试项目来获得你所得到的,但它没有任何问题。也许您应该发布您的代码并解释什么不起作用。publicpartialclassMainWindow:Window{publicDataTableMyTable{get;放;}publicMainWindow(){InitializeComponent();this.MyTable=newDataTable();this.MyTable.Columns.Add("测试");varrow1=this.MyTable.NewRow();row1["测试"]="dsjfks";this.MyTable.Rows.Add(row1);这个.DataContext=这个;}privatevoidButton_Click(objectsender,RoutedEventArgse){MessageBox.显示(“行数:”+this.MyTable.Rows.Count);XAML我不确定我的答案,但我会尝试......我遇到了同样的问题:CanUserAddRows总是错误的。事实证明,证书绑定没问题,但我绑定的类没有默认构造函数。这有效:privateObservableCollectionm_points;公共ObservableCollection点{得到{返回m_points;}设置{m_points=值;}}publicclassPoint{publicdoubleX{get;放;}publicdoubleY{get;放;}publicPoint(){this.X=0;这个.Y=0;}publicPoint(doublex,doubley){this.X=x;这个.Y=y;这样不行:以上是C#学习教程:在WPF中与MVVM中DataGrid绑定数据表分享的所有内容,如果对你有用,需要详细了解C#学习教程,希望大家多加注意——privateObservableCollectionm_points;公共ObservableCollection点{得到{返回m_points;}设置{m_points=值;}}publicclassPoint{publicdoubleX{get;放;}publicdoubleY{get;放;}publicPoint(doublex,doubley){this.X=x;这个.Y=y;}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
