在WPF中,如果DataGrid里使用了模板列,当拖动滚动条时,往往会出现列表内容显示混乱的情况。解决方法就是在Binding的时候给UpdateSourceTrigger赋值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<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> |
后台代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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;
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。