0
我的c#WPF應用程序我在運行時將列添加到DataGrid中,並通過LINQ從我的SQL db中填充。這是工作的罰款,直到我試圖從添加數據我許多一對多表LINQ多對多WPF數據綁定路徑
這裏的3個相關表格的簡化版本,我的數據庫:
documents: document_id, title
documents_keywords: document_id, keyword_id, value
keywords: keyword_id, name
我想在我的DataGrid是什麼列對於document.title,根據用戶選擇爲document.documents_keywords中的每個記錄添加一列。這裏是我的代碼:
DataGrid dataGrid = new DataGrid();
dataGrid.Columns.Add(new DataGridTextColumn
{
Header = "Title",
Binding = new Binding("title")
});
foreach (string keywordName in keywordsListBox.SelectedItems)
{
dataGrid.Columns.Add(new DataGridTextColumn
{
Header = keywordName,
Binding = new Binding("documents_keywords.FirstOrDefault(kw => kw.keyword.name.Equals(\""+keywordName+"\")).value")
});
}
dataGrid.ItemsSource = from d in db.documents select d;
我得到的關鍵字標題,但單元格都是空白的。在FirstOr默認綁定失敗:
System.Windows.Data Error: 40 : BindingExpression path error: 'FirstOrDefault(d_k => d_k.keyword.name.Equals("Order#"))' property not found on 'object' ''EntityCollection`1' (HashCode=7935090)'. BindingExpression:Path=documents_keywords.FirstOrDefault(d_k => d_k.keyword.name.Equals("Order#")).value; DataItem='document' (HashCode=5781744); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
要達到此目的的最佳方法是什麼?原諒我,因爲這是我第一次進入WPF和LINQ。
對於遲到的反應感到遺憾 - 這個項目遠遠沒有列入優先事項清單,我只是回到它。你的解決方案錯誤在最後一行,但考慮到複雜性,我想我會嘗試一種不同的方法。謝謝! – codeManJones 2011-03-22 19:06:28