2013-06-03 65 views
2

我只需要只讀顯示Linq數據;沒有要求觀察變化。這裏的LINQ的:將IEnumerable <匿名對象>綁定到WPF中的DataGrid

string ZIPCODEFIELDNAME="zip5"; 
DataTable DATA = (detailedQueryResult as DataTable); 
IEnumerable<object> ZIPCODE_SUMMARY; 

ZIPCODE_SUMMARY = from z in DATA.AsEnumerable() 
group z by z.Field<string>(ZIPCODEFIELDNAME) into g 
let list = g.ToList() 
select new 
{ 
zip = g.Key, 
eecount = list.Count(), 
// possible additional aggregate columns here 

}; 

我能夠這樣IEnumerable<anonymous object>綁定到一個Telerik的RadGridView代碼隱藏簡單地這樣做:

myRadGridView.ItemsSource = ZIPCODE_SUMMARY.ToList(); 

說,是無需聲明在XAML或結合必須定義任何列。那麼如何使用Visual Studio附帶的WPF DataGrid來實現呢?當我使用相同的方法時,它只顯示行分隔符。所以它知道列表中的項目,而不知道如何獲取列。

我想寫一些快速和骯髒的實用程序來導入一個gazillion CSV文件,其中沒有兩個具有相同的結構或相同的字段名稱,並且設置代碼的行數越少越好。

P.S.我剛剛進入WPF和Linq,所以請設置ReplyToNovice = true :-)

回答

1

您是否記得在數據網格上設置AutoGenerateColumns = true?如果是,請嘗試綁定到ICollectionView。

更新: 這很奇怪,下面的代碼適合我。有一件事,你可能必須將datagrid的datacontext設置爲{Binding},這將綁定到整個對象。

public MainWindow() 
{ 
    InitializeComponent(); 
    dgZips.ItemsSource = GetFakeZips(); 
} 

public dynamic GetFakeZips() 
{ 
    return Enumerable.Range(1500, 10).Select(i => new { Zip = i, Count = i/4 }); 
} 

的XAML:

<DataGrid x:Name="dgZips" AutoGenerateColumns="True" /> 
+0

您推測正確,我會忘記的AutoGenerateColumns設置爲true,但這不是它。 – Tim

+0

請讓我知道更新後的示例如何爲您工作。 –

+0

同樣的問題 - 網格行分隔線,沒有列數據。 – Tim

相關問題