Note that there are some explanatory texts on larger screens.

plurals
  1. PODatagrid image column add programatically wpf
    primarykey
    data
    text
    <p>I'm looking for a way on how I can add a column, that shows images, to a datagrid programatically. I've been looking on how to find the solution for a long time with no success.</p> <p>The way I'm doing it now is like this:</p> <pre><code>DataGridTemplateColumn col1 = new DataGridTemplateColumn(); col1.Header = "Betaald"; FrameworkElementFactory factory1 = new FrameworkElementFactory(typeof(System.Windows.Controls.Image)); Binding b1 = new Binding("Picture") { Mode = BindingMode.TwoWay }; factory1.SetBinding(System.Windows.Controls.Image.SourceProperty, b1); DataTemplate cellTemplate1 = new DataTemplate(); cellTemplate1.VisualTree = factory1; col1.CellTemplate = cellTemplate1; dtgVerkoopsdocumenten.Columns.Add(col1); </code></pre> <p>This should create a column where I can show images. All the data I get from a database, which I store in colums like this:</p> <pre><code>System.Windows.Controls.Image image = new System.Windows.Controls.Image(); //this is on top of my class MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string naam = getKlant(reader.GetInt32(2)); if (reader.GetBoolean(7) == false) { BitmapImage betalen = new BitmapImage(new Uri("/WpfApplication1;component/Images/false.png", UriKind.Relative)); image.Source = betalen; } else { BitmapImage betalen = new BitmapImage(new Uri("/WpfApplication1;component/Images/true.png", UriKind.Relative)); image.Source = betalen; } dtgVerkoopsdocumenten.Items.Add(new DataItem { ID = reader.GetInt32(1), klant = naam, netto = reader.GetDouble(3), btw = reader.GetDouble(4), bruto = reader.GetDouble(5), datum = reader.GetDateTime(6).ToString("dd-MM-yyyy"), soort2 = soort, Picture = image }); } reader.Close(); </code></pre> <p>DataItem is an own made class where I store in all my bindings:</p> <pre><code>//more code, but the one below is the one I'm talking about public System.Windows.Controls.Image Picture { get; set; } </code></pre> <p>What I get now is absolutely nothing. I don't get any errors though.</p> <p>So my question is: how can I store the image into the datagrid without having to mess around with the xaml file too much.</p> <p>Output:</p> <pre><code>System.Windows.Data Error: 1 : Cannot create default converter to perform 'two-way' conversions between types 'System.Windows.Controls.Image' and 'System.Windows.Media.ImageSource'. Consider using Converter property of Binding. BindingExpression:Path=Picture; DataItem='DataItem' (HashCode=435249); target element is 'Image' (Name=''); target property is 'Source' (type 'ImageSource') System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='System.Windows.Controls.Image' BindingExpression:Path=Picture; DataItem='DataItem' (HashCode=435249); target element is 'Image' (Name=''); target property is 'Source' (type 'ImageSource') System.Windows.Data Error: 1 : Cannot create default converter to perform 'two-way' conversions between types 'System.Windows.Controls.Image' and 'System.Windows.Media.ImageSource'. Consider using Converter property of Binding. BindingExpression:Path=Picture; DataItem='DataItem' (HashCode=45279885); target element is 'Image' (Name=''); target property is 'Source' (type 'ImageSource') System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='System.Windows.Controls.Image' BindingExpression:Path=Picture; DataItem='DataItem' (HashCode=45279885); target element is 'Image' (Name=''); target property is 'Source' (type 'ImageSource') </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload