2016-06-30 12 views
0

Ich verwende WPF DataGrid (System.Windows.Controls.DataGrid), um Spalten aus einem Datenbehälterobjekt anzuzeigen.Bild erscheint als Text auf DataGrid

Für jede Eigenschaft im Objekt, zeige ich eine Spalte im DataGrid. Ich verwende die ItemsSource-Eigenschaft des DataGrids, um an eine Liste zu binden, Items.Refresh(), um das DataGrid zu aktualisieren, wenn sich die Daten ändern.

Die angezeigten Spalten sind dynamisch (der Benutzer wählt aus, was im Einstellungsmenü angezeigt werden soll), daher kann ich die Spalten im XAML-Code nicht hinzufügen.

Eine der Eigenschaften in meinem Datenobjekt ist ein Bildobjekt:

public Image Status { get; set; } 

Aber wenn das Datagrid zeigt nur die Art des Objekts:

System.Windows.Controls.Image

Jede Art und Weise der angezeigt werden Bild und nicht der Typ?

EDIT

Datagrid Definition:

<DataGrid Name="ResultsDataGrid" /> 

Datendefinition:

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

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

Die Spalten werden automatisch generiert.

+0

Wie fügen Sie dynamisch die Spalten hinzu? Ich denke, Sie müssen möglicherweise DataGridTemplateColumn anstelle von DataGridTextColumn hinzufügen, wenn es ein Image ist. – alex10

+0

@ alex10 Ich benutze die Sichtbarkeit Eigenschaft, um die benötigten Spalten anzuzeigen. – giannisf

+0

Sichtbarkeit Sie haben also bereits die Spalten erstellt? Wie H.B sagte, benötigen Sie 'DataGridTemplateColumn'. Vielleicht sollten Sie den Code einfügen, wie Sie die Spalten hinzufügen. – alex10

Antwort

0

Ist das die Steuerklasse? Wenn dies der Fall ist, sollte Ihr Objekt diese nicht enthalten, sondern nur eine URL oder eine BitmapImage. In beiden Fällen müssen Sie wahrscheinlich eine benutzerdefinierte Spalte mit einer Datenvorlage erstellen, die entsprechend an Ihre Daten bindet.

Das heißt: Die Vorlage enthält eine Image, deren Quelle an die URL oder BitmapImage gebunden ist. Vielleicht brauchen Sie einen Konverter für die URL, oder es konvertiert nur selbstständig.

+0

Ich änderte es zu 'BitmapImage' und jetzt zeigt es das Bild' Uri' an. – giannisf

+1

Ich habe explizit gesagt, dass Sie Ihre eigene Spalte ('DataGridTemplateColumn' oder benutzerdefinierte Unterklasse) mit einer Datenvorlage benötigen, die dies richtig behandeln kann. –