私は別のライブラリから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')
感謝!
私は([ここ]だった私は、私が見つけた最も近いrelated-何かを見つけることができるかどうかを確認するために、これを研究して少し時間を費やしhttps://stackoverflow.com/questions/24679884/binding-datatable-to-a -datagrid-first-two-columns-empty-no-matter-what)どこに@ZoAnimusがありますか? "wpfカラム名に特殊文字や句読点があると、Datagridsに問題があります。 "_。 –
問題の性質を考えれば、WPFが通常の文字列パス解析ロジックを使用してこれらの名前を解釈していることが問題であることは明らかです。したがって、実際に探している参照はWPFバインディングパスのドキュメントです。パーサによって解釈される "特殊文字"は避ける必要があります。 –
合意、@ピーター、ありがとう - 残念ながら私はそのドキュメントを見つけることができませんでした。あなたは何か指針を持っていますか?ありがとう! –