繁体   English   中英

Datagrid没有绑定图像

Datagrid not binding the image

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我需要在datagrid中显示一个图像,但它的显示如下

System.windows.controls.Image System.windows.controls.Image

数据表我正在添加类型为Image的列,并且通过读取bytes []并转换为图像然后分配给数据表来控制该行。

//Creating the column type

 if (header.ColumnDescription == "ActiveStatus")
    {
      dc = new DataColumn(header.ColumnDescription, typeof(Image));
      dt.Columns.Add(dc);
   }
//Filling the data column
foreach (DataColumn col in dt.Columns)
    {                        
      dr[col] = GetRowItem(device, col.Caption);
    }
dt.Rows.Add(dr);

//Logic for getting the image
 Image img=new Image();
 BitmapImage logo = new BitmapImage();
 logo.BeginInit();
 logo.UriSource = new Uri("pack://application:,,,/Resources/Images/cloud_logon_radio_btn_green.png"); 
  logo.EndInit();
  img.Source = logo

有什么问题?

2 个回复

使用dataGrid的AutoGeneratingColumn事件来设置图像。

在xaml中定义Datatemplate

 <DataTemplate x:Key="ActivaStatusColumnTemplate">
            <Image DataContext="{Binding}"   >
                <Image.Style>
                    <Style TargetType="{x:Type Image}">
                        <Setter Property="Source" Value="red.png" />
                        <Style.Triggers>
                            <DataTrigger Value="On" Binding="{Binding}">
                                <Setter Property="Source" Value="green.png"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Image.Style>
            </Image>
        </DataTemplate>

//代码背后

private void dgView_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            if (e.Column.Header.ToString() == "ActiveStatus")
            {
                // Create a new template column.
                MyDataGridTemplateColumn templateColumn = new MyDataGridTemplateColumn();
                templateColumn.CellTemplate = (DataTemplate)Resources["ActivaStatusColumnTemplate"];
                templateColumn.ColumnName = e.PropertyName; // so it knows from which column to get binding data
                e.Column = templateColumn;
                e.Column.Header = "ActiveStatus";
            }

        }

//定义类以覆盖DataGridTemplateColumn

 /// <summary>
        /// Custom class derieved fromt the DataGridTemplateColumn to set the property name.
        /// </summary>
        public class MyDataGridTemplateColumn : DataGridTemplateColumn
        {
            public string ColumnName
            {
                get;
                set;
            }

            protected override System.Windows.FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
            {
                // The DataGridTemplateColumn uses ContentPresenter with your DataTemplate.
                ContentPresenter cp = (ContentPresenter)base.GenerateElement(cell, dataItem);
                // Reset the Binding to the specific column. The default binding is to the DataRowView.
                BindingOperations.SetBinding(cp, ContentPresenter.ContentProperty, new Binding(this.ColumnName));
                return cp;
            }
        }

参考http://social.msdn.microsoft.com/Forums/en/wpf/thread/8b2e94b7-3c44-4642-8acc-851de5285062

如果你想在浏览器中显示图像,你必须生成一个网址。 你不能直接从二进制显示图像。

你可以尝试使用一个处理程序文件(.ashx)把你的page_load的代码放在那个文件中,并在你的处理程序代码中

public void ProcessRequest (HttpContext context) {
    //Get the picture id by url
        //Query here
        byte[] picture = queryoutput;
        Response.ContentType = "images/jpeg";
        Response.BinaryWrite(picture);
    }

    public bool IsReusable {
    get {
        return false;
    }
    }
1 Silverlight将图像绑定到DataGrid中的ID

我试图将图像绑定到显示所有用户的网格中的ID。 有人知道该怎么做吗? 我有一个表User,其中有一个名为StatusId的字段。 有2种状态 状态1:ID:10 | 活动状态2:Id:90 | 不活跃 当状态为10时,我想显示绿色十字,当状态为90时,我想显示红色十字。 ...

2 绑定数据网格

我一直在尝试将DataGridTextColumns按列方式绑定到数组(我认为是int []),但没有成功。 我在msdn,stackoverflow等上都找不到特别有用的东西。 我已经尝试了很多方法,包括使用datagrid或datagridtextcolumns(itemsourc ...

3 绑定数据网格

我已经使用Entity Framework和WPF创建了代码优先的C#项目。 我创建了一个名为Personel Entity的实体。 我将那个实体拖放到MainWindow,但是它不显示任何数据。 我想我必须在MainWindow.xaml.cs文件中做一些事情,但我不知道该怎么办。 这 ...

5 如何根据绑定值在datagrid StackPanel中显示图像

我需要根据绑定值将图像显示为单独的行。 Datagrid代码如下。 我想用&lt;Image Source=""/&gt;再添加一个StackPanel。 源路径将基于上方网格中的{Binding OrderStatus} 。 如果OrderStatus值为“ New”,我想显示n ...

6 在asp.net中与Datagrid绑定图像无法正常工作

我在asp.net中的Datagrid中而不是gridView中显示信息。 datagrid包含一个名为Status的列。 状态可以是1或-1。 如果状态为1,则显示标记图标,如果状态为-1,则显示取消图标。 我已经完成了编码及其工作,但问题是,根据情况,图标未在所有列中显示,如下图所示 ...

7 如何根据绑定值更改WPF数据网格行的图像

我是WPF的初学者。 我有一个数据网格,用于显示带有列定义的消息,如下所示。 数据网格绑定到数据表 现在我需要添加一个标题为“状态”的coulmn。 和内容为图像。 我将数据表的“IsRead”列绑定到此列,这样如果IsRead值为False,我需要显示图像unread.pn ...

8 Datagrid将2个数据文件与图像绑定在一个列下?

在这里,我正在执行嵌套网格操作,这是在我的第一个datagrid中。 有名字,年龄,地址 用户单击该行后,我们将显示另一个带有数据主题名称和分数的网格 直到这里功能正常为止。 1:现在的问题是我应该在同一列中显示一张图片以及分数(我该如何实现这一点) 2:根据分数我需要 ...

9 WPF:将同一图像绑定到DataGrid中的多行(提高性能)

我有一个DataGrid,每列有几个绑定。 一列用于图像。 我已经发现,以下方式适用于在wpf DataGrid中绑定图像。 这是一种状态,有3种类型。 相同的类型表示相同的图片。 关于UI的性能,我有很多问题。 尤其是当我的后台任务在设置一列的状态后调用UI时。 但是初始 ...

10 在datagrid标头中绑定一个复选框

我有一个数据网格,其中第一列包含一个复选框,可让用户选择特定的行。 我在datagrid列标题中添加了一个复选框,以选中或取消选中所有行。 是否可以仅通过XAML绑定添加此功能(无检查事件)。 我认为“ myCollection.UserSelected”部分出了问题。 Thr ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM