C# 图像在DataGrid上显示为文本
我正在使用WPF DataGrid(C# 图像在DataGrid上显示为文本,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,我正在使用WPF DataGrid(System.Windows.Controls.DataGrid)来显示数据持有者对象中的列 对于对象中的每个属性,我在DataGrid中显示一列。 我正在使用DataGrid的ItemsSource属性绑定到一个列表,Items.Refresh(),以便在数据更改时更新DataGrid 显示的列是动态的(用户从设置菜单中选择要显示的内容),因此我无法在XAML代码中添加列 “我的数据对象”中的一个属性是图像对象: public Image Sta
System.Windows.Controls.DataGrid
)来显示数据持有者对象中的列
对于对象中的每个属性,我在DataGrid中显示一列。
我正在使用DataGrid的ItemsSource属性绑定到一个列表,Items.Refresh()
,以便在数据更改时更新DataGrid
显示的列是动态的(用户从设置菜单中选择要显示的内容),因此我无法在XAML代码中添加列
“我的数据对象”中的一个属性是图像对象:
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;
}
数据定义:
<DataGrid Name="ResultsDataGrid" />
private readonly List<ProductItem> _items = new List<ProductItem>();
public Main()
{
InitializeComponent();
ResultsDataGrid.ItemsSource = _items;
}
private readonly List_items=new List();
公用干管()
{
初始化组件();
ResultsDataGrid.ItemsSource=\u项;
}
列是自动生成的。这是控制类吗?如果是这样,您的对象不应该包含这些内容,而可能只是一个URL或一个
BitmapImage
,无论哪种方式,您都可能需要创建一个自定义列,其中包含相应绑定到数据的数据模板
即:模板包含一个
图像
,其源绑定到URL或位图图像
。可能您需要一个URL转换器,或者它只是自己进行转换。这是控件类吗?如果是这样,您的对象不应该包含这些内容,而可能只是一个URL或一个BitmapImage
,无论哪种方式,您都可能需要创建一个自定义列,其中包含相应绑定到数据的数据模板
即:模板包含一个
图像
,其源绑定到URL或位图图像
。也许你需要一个URL转换器,或者它自己转换。我将它改为BitmapImage
,现在它显示图像Uri
。我明确地说你需要自己的列(DataGridTemplateColumn
或自定义子类)使用能够正确处理此问题的数据模板。我将其更改为BitmapImage
,现在它显示图像Uri
。我明确表示,您需要使用能够正确处理此问题的数据模板来创建自己的列(DataGridTemplateColumn
或自定义子类)。如何动态添加列?我想当DataGridTemplateColumn是图像时,您可能需要添加DataGridTemplateColumn而不是DataGridTextColumn。@alex10我正在使用可见性属性来显示所需的列。可见性?那么您已经创建了列了吗?正如H.B所说,您需要DataGridTemplateColumn
。也许您应该将代码粘贴到如何添加列上。@alex10我不是自己创建列的。我正在使用ResultsDataGrid.ItemsSource=\u items
。_项是一个列表
。显示更多代码。我很困惑…..如何动态添加列?我想当DataGridTemplateColumn是图像时,您可能需要添加DataGridTemplateColumn而不是DataGridTextColumn。@alex10我正在使用可见性属性来显示所需的列。可见性?那么您已经创建了列了吗?正如H.B所说,您需要DataGridTemplateColumn
。也许您应该将代码粘贴到如何添加列上。@alex10我不是自己创建列的。我正在使用ResultsDataGrid.ItemsSource=\u items
。_项是一个列表
。显示更多代码。我很困惑。。。。。