WPF添加datagrid图像列可能吗?

lem*_*unk 7 c# wpf datagrid

使用C#.Net 4.5,Visual Studio 2012 Ulti,WPF.

我有一些旧的win-forms代码,我想在这个新的WPF应用程序中做.

代码如下:

DataGridViewImageCell pNew = new DataGridViewImageCell();

ParetoGrid.Columns.Add(new DataGridViewImageColumn() { CellTemplate = pNew, FillWeight = 1, HeaderText = "pNew", Name = "pNew", Width = 30 });

ParetoGrid.Columns["pNew"].DisplayIndex = 18;
Run Code Online (Sandbox Code Playgroud)

3行代码添加可以处理图像的列.在WPF中,我看到它有点不同.我需要添加"图像列"吗?或者WPF列是否支持图像?还是有另外3个线性解决方案,只是不同的语法?

谢谢你的帮助

Jer*_*myK 15

看到这个答案:

WPF DataGrid中的图像列

 <DataGridTemplateColumn Header="Image" Width="SizeToCells"
 IsReadOnly="True">
   <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
           <Image Source="{Binding Image}" />
      </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

要在以下代码中添加列:

DataGridTextColumn textColumn1 = new DataGridTextColumn();
textColumn1.Header = "Your header";
textColumn1.Binding = new Binding("YourBindingField");
dg.Columns.Add(textColumn1);
Run Code Online (Sandbox Code Playgroud)

使用DataGridTemplateColumn添加自定义列中看到:如何显示图像在WPF DataGrid列编程?

  • 创建WPF来使用XAML。它使工作变得更轻松,并且没有理由自己进行编码:)创建xaml之后,您始终可以查看自动化的源代码,以了解在幕后所做的一切以使其实现 (2认同)

小智 5

这就是我所做的。在数据网格中添加一个带有图像控件的数据模板,如下所示

            <DataGridTemplateColumn Header="File Type" Width="*">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Image Height="25" Width="50" Source="{Binding FileIcon}"  />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我将图像与名为“FileIcon”的属性绑定在一起,该属性在类 Version 中使用,如下所示

            public class Version
            {
              public string FileIcon { get; set; }
            }
Run Code Online (Sandbox Code Playgroud)

现在您只需绑定提供“FileIcon”的路径并像这样更新 DataGrid 的 ItemSource

            ObservableCollection<Version> items = new ObservableCollection<Version>();

            items.Add(new Version()
            {
                FileIcon = "/AssemblyName;component/Images/eye.png",
            });
            YourDataGrid.ItemsSource = null;
            YourDataGrid.ItemsSource = items;
Run Code Online (Sandbox Code Playgroud)