WPF拖动DataGrid滚动条时内容混乱的解决方法
程序员文章站
2023-12-31 21:54:58
在wpf中,如果datagrid里使用了模板列,当拖动滚动条时,往往会出现列表内容显示混乱的情况。解决方法就是在binding的时候给updatesourcetrigger...
在wpf中,如果datagrid里使用了模板列,当拖动滚动条时,往往会出现列表内容显示混乱的情况。解决方法就是在binding的时候给updatesourcetrigger赋值。
<grid> <grid.rowdefinitions> <rowdefinition height="25"></rowdefinition> <rowdefinition></rowdefinition> </grid.rowdefinitions> <button height="23" click="button_click" content="click" grid.row="0"></button> <datagrid name="dgstudent" autogeneratecolumns="false" isenabled="true" grid.row="1" enablecolumnvirtualization="true" enablerowvirtualization="true"> <datagrid.columns> <datagridtextcolumn header="name" binding="{binding name}" width="80"></datagridtextcolumn> <datagridtemplatecolumn header="age" width="70"> <datagridtemplatecolumn.celltemplate> <datatemplate> <textbox margin="5" text="{binding age, mode=twoway, updatesourcetrigger=propertychanged}"></textbox> </datatemplate> </datagridtemplatecolumn.celltemplate> </datagridtemplatecolumn> <datagridtemplatecolumn header="course" width="100"> <datagridtemplatecolumn.celltemplate> <datatemplate> <combobox margin="5" itemssource="{binding coursesource}" text="{binding course, mode=twoway, updatesourcetrigger=propertychanged}"></combobox> </datatemplate> </datagridtemplatecolumn.celltemplate> </datagridtemplatecolumn> </datagrid.columns> </datagrid> </grid>
后台代码如下:
public class student { public string name { get; set; } public string age { get; set; } public list<string> coursesource { get; set; } = new list<string>() { "c", "c++", "c#" }; public string course { get; set; } } private void button_click(object sender, routedeventargs e) { var students = new list<student>(); for (int i = 1; i <= 50; i++) { var student = new student() { name = $"student{i}" }; students.add(student); } this.dgstudent.itemssource = null; this.dgstudent.itemssource = students; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。