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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。