我有一个数据表,当我更改(添加,修改..ect)时,它不会反射(reflect)在绑定(bind)到该数据表的数据网格上。

ItemsSource="{Binding TableData,Mode=TwoWay,IsAsync=True}"

多数民众赞成在绑定(bind)^

现在,当我设置RowError时
TableData.Rows[x].RowError = ex.Message;

HasError设置为true ...但是DataGrid不能反射(reflect)这一点(我有一种样式,当出现错误时会标记为红色)

注意:我的更改没有更多地反射(reflect)在设置ErrorMessages之后,我还尝试在ViewModel中添加行,并且添加的行也不会得到反射(reflect)。

关于数据表:
它没有设置的列或任何内容,它会影响用户选择的所选数据库表。

最佳答案

绑定(bind)到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);
            }
        }
    }

该链接提供了使用数据库和使用绑定(bind)的更完整示例。

关于wpf - 编辑到动态DataTable,而不在DataGrid中更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8838492/

10-15 03:54