我有一个DataTable,当我改变(add,modifiy..ect)时,它不会反映在绑定到DataTable的DataGrid上。
ItemsSource="{Binding TableData,Mode=TwoWay,IsAsync=True}"
那是绑定^
现在我设置了RowError
TableData.Rows[x].RowError = ex.Message;
HasError被设置为true ...但DataGrid没有反映这一点(我有一个样式,当出现错误时将行标记为红色)
注意:我的更改没有反映在设置ErrorMessages之上,我还尝试在ViewModel中添加行,并且这些添加的行也没有被重新生成。
关于DataTable: 它没有设置列或任何内容,它会重新生成用户选择的选定数据库表。
答案 0 :(得分:1)
绑定到DataTable
将无效。您需要先将DataTable
转换为ObservableCollection<>
。来自here:
public void ConvertDataTable( DataTable dt )
{
DataList = new ObservableCollection<ProjectWorkHours>();
//Scan and arrange data into ObservableCollection
int UserID = 0;
if ( dt.Rows.Count >0 )
{
UserID = int.Parse( dt.Rows[0]["UserID"].ToString() );
//Distill project id list
List<int> ProjectIDList = GetProjectIDList( dt );
for ( int i = 0 ; i < ProjectIDList.Count; i ++ )
{
int ProjectID= ProjectIDList[i];
//Get WorkRecord
int[] MyWorkRecord = GetWorkRecord(dt, ProjectID);
ProjectWorkHours newProjectWorkHours = new ProjectWorkHours(UserID,ProjectID,MyWorkRecord);
DataList.Add( newProjectWorkHours);
}
}
}
该链接有一个更完整的例子,可以使用数据库并使用绑定。
答案 1 :(得分:0)
TableData是什么类型的?
如果是List<>
,则更改列表中的项目不更新约束
如果是ObservableCollection<>
,那么更改集合中的项目将更新绑定