WPF:两个数据网格的同步滚动变得缓慢,其中一个具有绑定的图像列
我有两个WPF:两个数据网格的同步滚动变得缓慢,其中一个具有绑定的图像列,wpf,image,datagrid,smooth-scrolling,datagridtemplatecolumn,Wpf,Image,Datagrid,Smooth Scrolling,Datagridtemplatecolumn,我有两个DataGrids,我有同步滚动(在一个网格上滚动会导致另一个网格滚动)。其中一个网格有一个DataGridTemplateColumn,其中DataTemplate设置为Image: <DataGridTemplateColumn Width="16"> <DataGridTemplateColumn.CellStyle> <Style TargetType="DataGridCell"> <Ev
DataGrid
s,我有同步滚动(在一个网格上滚动会导致另一个网格滚动)。其中一个网格有一个DataGridTemplateColumn
,其中DataTemplate
设置为Image
:
<DataGridTemplateColumn Width="16">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="CommentIcon_Clicked" />
</Style>
</DataGridTemplateColumn.CellStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Blank, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
这导致默认转换器失败,从而导致滚动变得缓慢,因为每次滚动发生时都会调用属性getter
吸取的教训
正如Steven所说,确保没有绑定错误
提示
在调试模式下运行WPF应用程序时,使用即时窗口在VS输出窗口中查找绑定错误。 此外,您还可以在与图像源的绑定上直接使用此附加属性:
diagnostics:PresentationTraceSources.TraceLevel=High
命名空间诊断在这里:xmlns:diagnostics=“clr Namespace:System.diagnostics;assembly=WindowsBase”
之后,您可以在输出窗口中再次找到有关绑定的更多信息。
不幸的是,绑定错误可能会对性能造成巨大影响。因此,在处理任何WPF应用程序时,请始终尝试完全消除它们
顺便说一句,您不必使绑定双向进行,因为Image
控件无法将属性值更改回原来的值。它的单向
控件只接受给定的值
编辑:您可以使用一些WPF DataGrid控件性能提示您是否尝试在数据网格上设置虚拟化?也可以帮助您。我刚刚使用即时窗口(第一次)在运行时将一些元素添加到列表中,并看到了这些绑定错误。在那之后,我来这里检查是否有任何答案。在阅读了你的答案和绑定错误后,我现在知道问题出在哪里了!非常感谢。
var d2 = (from l in t.Item2
select new ProgramLine { Blank = String.Emtpty, Line = l}).ToList();
dataGrid2.ItemsSource = d2;