WPF拖动DataGrid滚动条时内容混乱的解决方法
在WPF中,如果DataGrid里使用了模板列,当拖动滚动条时,往往会出现列表内容显示混乱的情况。解决方法就是在Binding的时候给UpdateSourceTrigger赋值。
<Grid> <Grid.RowDefinitions> <RowDefinitionHeight="25"></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <ButtonHeight="23"Click="Button_Click"Content="Click"Grid.Row="0"></Button> <DataGridName="dgStudent"AutoGenerateColumns="False"IsEnabled="True"Grid.Row="1" EnableColumnVirtualization="True"EnableRowVirtualization="True"> <DataGrid.Columns> <DataGridTextColumnHeader="Name"Binding="{BindingName}"Width="80"></DataGridTextColumn> <DataGridTemplateColumnHeader="Age"Width="70"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBoxMargin="5"Text="{BindingAge,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumnHeader="Course"Width="100"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBoxMargin="5"ItemsSource="{BindingCourseSource}"Text="{BindingCourse,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></ComboBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </Grid>
后台代码如下:
publicclassStudent { publicstringName{get;set;} publicstringAge{get;set;} publicList<string>CourseSource{get;set;}=newList<string>(){"C","C++","C#"}; publicstringCourse{get;set;} } privatevoidButton_Click(objectsender,RoutedEventArgse) { varstudents=newList<Student>(); for(inti=1;i<=50;i++) { varstudent=newStudent() { Name=$"student{i}" }; students.Add(student); } this.dgStudent.ItemsSource=null; this.dgStudent.ItemsSource=students; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。