2016-07-06 48 views
0

私は別のライブラリからC#DataTableを取得し、それをWPF DataGridに表示しようとするUIを書いています。これにより、DataTable内の列に特殊文字(ex .または[])が含まれていると、バインディングエラー(およびユーザーに行の表示エラーまたは欠落したデータ)が発生します。C#DataTableをWPF DataGridにバインドするときに使用できる列名は何ですか?

バインディングエラーの原因とは何かについて、列名には合法的なものはありますか?

は、この単純なコードでは、私はDataGridとWPFフォームを作成している、と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; 
} 

上記のコードは以下の結合のエラーを生成します。

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') 

感謝!

+0

私は([ここ]だった私は、私が見つけた最も近いrelated-何かを見つけることができるかどうかを確認するために、これを研究して少し時間を費やしhttps://stackoverflow.com/questions/24679884/binding-datatable-to-a -datagrid-first-two-columns-empty-no-matter-what)どこに@ZoAnimusがありますか? "wpfカラム名に特殊文字や句読点があると、Datagridsに問題があります。 "_。 –

+0

問題の性質を考えれば、WPFが通常の文字列パス解析ロジックを使用してこれらの名前を解釈していることが問題であることは明らかです。したがって、実際に探している参照はWPFバインディングパスのドキュメントです。パーサによって解釈される "特殊文字"は避ける必要があります。 –

+0

合意、@ピーター、ありがとう - 残念ながら私はそのドキュメントを見つけることができませんでした。あなたは何か指針を持っていますか?ありがとう! –

答えて

0

バインディング中に反映され、特性を見つけることができます。つまり、リフレクション中に「構文エラー」を引き起こす列名を指定することはできません。 https://msdn.microsoft.com/en-us/library/bb613546(v=vs.110).aspx

+0

ありがとう、これは非常に便利ですが、残念ながら、このリンクでは、どのクラスの文字がその構文エラーを引き起こすのかを明確に把握することはできませんでした。遊び回っています。と[]は難しいです。どの構文が許可されているかを正確に示すより良い文書がありますか? –

+0

プロパティ名の言語仕様を確認できます。https://www.microsoft.com/en-us/download/confirmation.aspx?id=7029、第2.4.2章 – Dexion

+0

Thanks @ Dexion-これはPeterの回答と組み合わせて先に私にはっきりとしたイメージを与える。 –

関連する問題