Datagridtemplatecolumnupdatesourcetriggerexplicitlyonlyupdatesthefirstrow我的XAML:我的学生管理课程:publicclassStudentManagement:INotifyPropertyChanged{privatestringStudId;公共布尔检查{得到;放;}publicintID{得到;放;}publicstringStudentID{get{returnStudId;}设置{StudId=值;PropertyChanged(this,newPropertyChangedEventArgs("StudentID"));}}publicstringFirstName{get;放;}publicstringLastName{get;放;}公共字符串性别{得到;放;}公共字符串生日{得到;放;}publicstringMobileNumber{get;放;}publicstring}publicstringSection{get;放;}公共字符串部{get;放;}公共字符串课程{得到;放;}publicstring学期{get;放;}publicListAccessLevel{get;放;}publicstringAccessLevels{get;放;}publicboolSetTime{得到;放;}公共字符串开始日期{得到;放;}公共字符串过期{得到;放;}民众事件PropertyChangedEventHandlerPropertyChanged=delegate{};}示例代码:publicObservableCollectionStudentManagements{get;放;}临时列表(我实际上只是测试一下)StudentManagements=newObservableCollection();列表AccessLevel=newList();AccessLevel.Add("a");AccessLevel.Add("b");AccessLevel.Add("c");AccessLevel.Add("d");AccessLevel.Add("e");StudentManagements.Add(newSM(){StudentID="1111",AccessLevel=AccessLevel,AccessLevels="a,c",出生日期="1/1/1993",Course="",Department="",Expiration="1/1/1993",FirstName="",Gender="Male",LastName="",MobileNumber="09497740052",Section="",Semester="1st",StartDate="1/1/1993",Year="2nd",SetTime=true,ID=1});StudentManagements.Add(newSM(){StudentID="2222",AccessLevel=AccessLevel,AccessLevels="e,d",出生日期="1/1/1992",Course="",Department="",Expiration="1/1/1992",FirstName="",Gender="Male",LastName="",MobileNumber="09497740052",Section="",Semester="1st",StartDate="1/1/1994",Year="2nd",SetTime=true,ID=1});显式UpdateSource的按钮只更新第一行并且不是所有编辑过的行(请注意,我只是在测试这个,这就是为什么我只在一列上尝试过这个):x=FindChild(AccessGrid,"StudentIdTextBox");BindingExpressiona=x.GetBindingExpression(TextBox.TextProperty);a.UpdateSource();我从这个人那里得到了FindChildFindChild我和这个人几乎有同样的问题,但是没有人回答他的问题:Guywiththesameproblem然后我只是通过按钮刷新它们:AccessGrid.ItemsSource=null;AccessGrid.ItemsSource=StudentManagements;现在,它有点工作了,我的updatesourcetrigger属性设置为显式,所以我可以在单击按钮后保存更改,但只有第一行得到更新,是否有任何其他方式可以显式更新sourcetrigger属性?借助一个小方法来查找所有视觉后代(=从模板定义实例化的框架元素)和一些用于检查后代的Linq函数是具有给定名称的文本框,您可以显式更新所有行的可视化树绑定在}}publicstaticIEnumerableFindAllVisualDescendants(thisFrameworkElementparent){if(parent==null)yieldbreak;堆栈堆栈=新堆栈();诠释我=0;while(true){if(iisinbuttonclick,justcallthehelper:privatevoidButton_Click(objectsender,RoutedEventArgse){//检查:MessageBox.Show(StudentManagements[1].StudentID.ToString());vartextboxes=AccessGrid.FindAllVisualDescendants().Where(elt=>elt.Name=="StudentIdTextBox").OfType();foreach(vartextboxintextboxes){BindingExpression绑定=textbox.GetBindingExpression(TextBox.TextProperty);绑定。UpdateSource();}//检查:MessageBox.Show(StudentManagements[1].StudentID.ToString());}它应该有所帮助,希望祝你好运,以上是C#学习教程:Datagridtemplatecolumnupdatesourcetriggerexplicitly只更新第一行所有分享的内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
