欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WPF拖动DataGrid滚动条时内容混乱的解决方法

程序员文章站 2022-03-26 08:37:38
在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;
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。