我有一个DataGrid,每个列有几个绑定。一列用于图像。我已经发现,下面的方式适用于在wpf DataGrid中绑定图像。WPF:将相同的图像绑定到DataGrid中的多行(提高性能)
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Width="16" Height="16" Source="{Binding imagePathStatus, IsAsync=True}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
public class DataGridObject
{
public String imagePathStatus { get; set; }
...
}
这是一个状态和有3种类型。相同的类型意味着相同的图片。提到UI的性能时,我遇到了很多问题。特别是当我的后台任务在设置一列的状态后调用UI时。但是,初始化GridView(除了UI之外没有任何其他线程)需要很长时间。取消激活图像列可解决问题。
我正在寻找几个小时,并尝试了很多东西。
我已经把图像转化为资源,并通过
this.imagePathIcon = "pack://application:,,,/Etlxxx;component/GraphicUserInterface/Images/image.jpg";
我宣布结合异步使用它们,所以至少在UI不会冻结。
在我看来,问题是每一行加载图像,即使他们使用相同的图片。可能是因为我只限于这条路。据我所知,没有办法直接绑定图像。
一切工作正常。但是我可以看到每个图像都是分开加载的。我很困惑。
图片真的很小(16x16),但仍然减慢了整个应用程序。
有没有办法将同一图像绑定到DataGrid中的多个行。理想情况下,应用程序必须一次加载图像,并在其所属的每一行中立即显示。
感谢您的帮助!
“据我所知,没有的直接结合方式一个图像”。那是不正确的。声明“ImageSource”类型的属性,例如'public ImageSource StatusImage {get;组; }',然后分配一个BitmapImage,比如'StatusImage = new BitmapImage(new Uri(“pack:// application:,,,/Etlxxx; component/GraphicUserInterface/Images/image.jpg”))''。然后绑定Image控件的'Source'属性,如' ' –
Clemens
解决了这个问题。非常感谢你。是否可以将您的评论标记为解决方案? – theawak3r