我想从csv文件中检索数据(它们都是图像参数),并将其显示在datagrid中。旁边,每个条目我要显示图像的缩略图。如何在数据网格中同时包含图像和其他条目? 所以,这里有
实体
public class ImageProperties
{
public string ImageThumbNailPath{ get; set;}
public string ImageFileName{ get; set;}
public double Sharpness{ get; set;}
public int ImageWidth{ get; set;}
public int ImageHt{ get; set;}
...
}
Xaml
<DataGrid x:Name="dataGridView" ItemsSource="{Binding ImagePropertiesList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Image">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Height="25" Width="50" Source="{Binding ImageThumbNailPath}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
从ViewModel:
var ImagePropertiesList = new ObservableCollection<ImageProperties>();
ImagePropertiesList.Add(new ImageProperties() {
ImageThumbNailPath=@"C:\Users\imgIcon.tif", ImageFileName="imgIcon.tif",
Sharpness = 4.5, ImageWidth=50, ImageHt = 50 });
在上面,我既看不到图像,也看不到文本数据……我看到我没有启用显示文本的方法,但不确定与图像结合时该怎么做。
我的ImageProperties类可能会被修改为包括更多属性,因此我不想为每个属性包括以下内容。
<DataGridTextColumn Header="ImageWidth" Binding="{Binding ImageWidth}"/>
有没有办法我仍然可以在第一列中显示图像,并在随后的列中显示所有其他属性?请指导我。
答案 0 :(得分:0)
ImagePropertiesList 必须是ViewModel中的公共属性。
public ObservableCollection<ImageProperties> ImagePropertiesList
{
get;
set;
}
进行此更改后,您只需从当前的 ImagePropertiesList
实例中删除 varImagePropertiesList = new ObservableCollection<ImageProperties>();
如果这不起作用,请确保将DataContext设置为ViewModel。