【问题标题】:Image appears as Text on DataGrid图像在 DataGrid 上显示为文本
【发布时间】:2016-06-30 19:47:38
【问题描述】:

我正在使用 WPF DataGrid (System.Windows.Controls.DataGrid) 来显示来自数据持有者对象的列。

对于对象中的每个属性,我在 DataGrid 中显示一列。 我正在使用 DataGrid 的 ItemsSource 属性绑定到列表,Items.Refresh() 以在数据更改时更新 DataGrid。

显示的列是动态的(用户从设置菜单中选择要显示的内容),因此我无法在 XAML 代码中添加这些列。

我的数据对象中的一个属性是 Image 对象:

    public Image   Status { get; set; }

但是当DataGrid只显示对象的类型时:

System.Windows.Controls.Image

有什么方法可以显示图像而不是类型?

编辑

数据网格定义:

<DataGrid Name="ResultsDataGrid" />

数据定义:

private readonly List<ProductItem> _items = new List<ProductItem>();

public Main()
        {
            InitializeComponent();
            ResultsDataGrid.ItemsSource = _items;
         }

列是自动生成的。

【问题讨论】:

  • 如何动态添加列?我猜当它是图像时,您可能需要添加 DataGridTemplateColumn 而不是 DataGridTextColumn。
  • @alex10 我正在使用Visibility 属性来显示所需的列。
  • 可见性?所以您已经创建了列?正如 H.B 所说,您需要DataGridTemplateColumn。也许您应该粘贴添加列的代码。
  • @alex10 我不是自己创建列。我正在使用ResultsDataGrid.ItemsSource = _items。 _items 是List
  • 向我们展示更多代码。我很困惑.....

标签: c# wpf wpfdatagrid


【解决方案1】:

那是控制类吗?如果是这样,您的对象不应该包含这些,而可能只是一个 URL 或 BitmapImage,无论哪种方式,您都可能需要创建一个自定义列,其中包含相应地绑定到您的数据的数据模板。

即:模板包含一个Image,其源绑定到URL 或BitmapImage。也许您需要一个 URL 转换器,或者它只是自行转换。

【讨论】:

  • 我将其更改为BitmapImage,现在它显示图像Uri
  • 我明确说过,您需要自己的列(DataGridTemplateColumn 或自定义子类)以及可以正确处理此问题的数据模板。
猜你喜欢
  • 1970-01-01
  • 2014-07-20
  • 2021-08-26
  • 2013-04-15
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多