2016-07-06 6 views
0

Ich schreibe einige UI, die eine C# DataTable aus einer anderen Bibliothek und versucht, es in einem WPF DataGrid anzuzeigen. Dies verursacht Bindungsfehler (und für den Benutzer, Zeilenanzeigefehler oder fehlende Daten), wenn die Spalten innerhalb der DataTable Sonderzeichen haben (zB . oder []). Ich könnte vielleicht versuchen, die Sonderzeichen zu ersetzen, daher meine Frage:Welche Spaltennamen sind zulässig, wenn eine C# -DataTable an ein WPF DataGrid gebunden wird?

Gibt es einen Verweis, was für einen Spaltennamen zulässig ist, was einen verbindlichen Fehler verursachen könnte?

In diesem einfachen Code, ich habe eine WPF-Form mit einem DataGrid erstellt und banden ihn an einen DataTable:

public DataTable Table { get; private set; } 

public MainWindow() 
{ 
    // Set up a table 
    Table = new DataTable(); 
    Table.Columns.Add("a"); 
    Table.Columns.Add("a.1"); 
    Table.Columns.Add("a[]"); 
    Table.Rows.Add("1", "2.", "3."); 
    InitializeComponent(); 

    DataContext = this; 
} 

Der obige Code erzeugt die folgenden Bindungsfehler:

System.Windows.Data Error: 40 : 
BindingExpression path error: '[]' property not found on 'object' ''String' (HashCode=-842352753)'. BindingExpression:Path=a[]; DataItem='DataRowView' (HashCode=44777048); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String') 
System.Windows.Data Error: 40 : 
BindingExpression path error: '1' property not found on 'object' ''String' (HashCode=-842352753)'. BindingExpression:Path=a.1; DataItem='DataRowView' (HashCode=14413736); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String') 

Dank !

+0

Ich verbrachte ein bisschen Zeit damit, dies zu erforschen, um zu sehen, ob ich etwas Ähnliches finden konnte - das, was ich am nächsten fand, war [hier] (https://stackoverflow.com/questions/24679884/binding-datatable-to-a -datagrid-first-zweispalten-empty-no-matter-what) wo @ZoAnimus sagte _ "wpf Datagrids haben Probleme, wenn in den Spaltennamen Sonderzeichen oder Interpunktion stehen. Wenn Sie diese Zeichen entfernen, sollte es wie erwartet funktionieren . "_. –

+0

Angesichts der Art des Problems scheint es klar, dass das Problem ist, dass WPF diese Namen mit seiner normalen String-Pfad-Parsing-Logik interpretiert. Die Referenz, nach der Sie tatsächlich suchen, ist die WPF-Bindungspfaddokumentation. Alle "Sonderzeichen", die vom Parser interpretiert werden, müssen vermieden werden. –

+0

Einverstanden, @Peter, danke - leider konnte ich diese Dokumentation nicht finden. Hast du irgendwelche Hinweise? Vielen Dank! –

Antwort

0

Während der Bindung und der Suche nach dem Property gibt es eine gewisse Reflexion, was bedeutet, dass Sie keinen Spaltennamen angeben können, der während der Reflektion einen "Syntaxfehler" verursachen würde. https://msdn.microsoft.com/en-us/library/bb613546(v=vs.110).aspx

+0

Danke, das ist sehr hilfreich !, aber leider gab mir der Link kein klares Bild davon, welche Klassen von Zeichen diesen Syntaxfehler verursachen würden. Herumspielen hat gezeigt. und [] schwierig zu sein; Aber gibt es eine bessere Dokumentation, die genau zeigt, welche Syntax erlaubt ist? –

+0

Sie können die Sprachspezifikation über Eigenschaftsnamen überprüfen: https://www.microsoft.com/en-us/download/confirmation.aspx?id=7029, Kapitel 2.4.2 – Dexion

+0

Dank @ Dexion-this in Kombination mit Peters Antworten früher gib mir ein klares Bild. –