我有一個DBF文件讀入數據表並顯示在WPF中的數據網格。此DBF文件是特殊的,其列名稱爲「A.B」。綁定此列後,綁定表達式可能將「A」作爲數據視圖的屬性進行交易,否則「B」將爲「A」的屬性。有沒有辦法解決這個問題?在WPF中的綁定路徑中的點導致問題
以下是重新創建此問題的代碼。只需在XAML中有一個DataGrid名稱「dg」。按F5時,它應該在第一行顯示「Godspeed」,但沒有任何顯示。
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("A.B");
DataRow row = dt.NewRow();
row[0] = 1;
row[1] = "Godspeed";
dt.Rows.Add(row);
DataGridTextColumn colA = new DataGridTextColumn();
colA = new DataGridTextColumn();
colA.Binding = new Binding("A.B");
colA.Header = "A.B";
dg.Columns.Add(colA);
var dv = new DataView(
dt,
"",
"ID ASC",
DataViewRowState.CurrentRows);
dg.ItemsSource = dv;
這裏是我的代碼的效果截圖:
這裏是窺探看着表達異常。所以我相信這個問題是由綁定路徑中的「A.B」點引起的。
System.Windows.Data Error: 40 : BindingExpression path error: 'A' property not found on 'object' ''DataRowView' (HashCode=60213203)'. BindingExpression:Path=A.B; DataItem='DataRowView' (HashCode=60213203); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String') Thanks,
感謝您的幫助;我仍然在這個問題上掙扎。我們在X64環境中;所以我們不能使用OleDbProvider等;所以我們用二進制閱讀器閱讀DBF。上面的代碼是一個簡單的例子來重新創建這個問題,我不確定從OleDb或我們的方法有任何不同的讀取,列類型是相同的,在數據源中的值是相同的。所以我認爲核心問題來自於約束性表達。請看我編輯的問題。 – Howard
奇怪。嗯..你試過逃跑了嗎? 「A \ .B」? – KMC
「A \ .B」是非法使用。但我試着用[A.B]解決了這個問題;但是通過這種方式,當單擊列標題進行排序時,它會引發關於SortMemberPath的異常,所以我們需要掛鉤事件來修剪'['和']'以使其工作。不管怎麼說,還是要謝謝你。 – Howard