我正在編寫一些UI,它需要從另一個庫中獲取C#DataTable
,並嘗試將其顯示在WPF DataGrid
中。當DataTable
中的列有特殊字符(例如.
或[]
)時,這會導致綁定錯誤(對用戶,行顯示錯誤或缺失數據)。我也許可以嘗試替換特殊字符,因此我的問題:將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')
由於!
我花了一點時間研究這個,看看我能否找到任何相關的東西 - 最近我發現是[這裏](https://stackoverflow.com/questions/24679884/binding-datatable-to-a -datagrid-first-two-columns-empty-no-matter-what)其中@ZoAnimus表示_「如果列名中有特殊字符或標點符號,則wpf Datagrids會出現問題如果刪除這些字符,它應該按預期方式運行。「_。 –
考慮到問題的性質,很明顯問題在於WPF正在使用正常的字符串路徑分析邏輯來解釋這些名稱。所以你實際尋找的引用是WPF綁定路徑文檔。需要避免解析器將解析的任何「特殊字符」。 –
同意@Peter,謝謝,不幸的是我一直無法找到該文檔。你有什麼建議嗎?謝謝! –