2013-02-07 91 views
2

我試圖創建一個DataGrid,其中有下拉菜單的標題,我不知道如何去做。自定義的WPF DataGrid與標題中的下拉菜單

數據網格本身是從它可以有許多不同的格式,所以我不能預先定義XAML列CSV文件填充,而不是將它們像:

//add headers as columns on the data grid 
var headerRow = _inputFile.GetHeaderRow(); 
foreach (var hr in headerRow) 
{ 
     var textColumn = new DataGridTextColumn(); 
     textColumn.Header = hr; 
     SourceGrid.Columns.Add(textColumn); 
} 

我的目標是要還在標題列中有下拉菜單(或者第一行是否適合樣式),因爲我的想法是將輸入的CSV文件映射到一組預定義的輸出,所以我希望用戶爲每個輸入選擇一個文件標題通過下拉菜單將其映射到什麼地方。

嘗試在xaml中定義數據網格模板會更好嗎?或者,也許可以將我的輸入數據安排到一個類結構中,這樣可以更輕鬆地以我想要的方式將數據綁定到網格上?還是其他什麼東西?

我對WPF相當陌生,並且很難找到從這裏出發的地方,所以即使是在正確方向的指針也會非常有幫助!


編輯:

var comboColumn = new DataGridComboBoxColumn(); 
comboColumn.Header = new ComboBox(); 
SourceGrid.Columns.Add(comboColumn); 

所以我知道我可以設置標題是在代碼中的文本或組合框,但有把兩者在同一列標題文本和組合框的方式? 另外,我的方法是解決這個問題,或者我應該尋找一種不同的控制方式?或者可能使用數據綁定而不是在代碼中設置值?

+0

你明白了嗎?我試圖實現相同的事情,目前正在努力與綁定組合框選擇 – RyanS

+0

@RyanS害怕不是。如果你想出了一個解決方案,請在這裏發佈它,讓其他人可以看到它:) – peacemaker

+0

我得到了組合框中的組合框,但沒有找到一個優雅的方式來綁定他們的動態數量。我最終找到了一種替代方法來完成我所需的工作 – RyanS

回答

1

以下代碼將幫助您在wpf中顯示Combobox標頭。

<DataGridTextColumn Binding="{Binding FirstName}"> 
    <DataGridTextColumn.Header> 
     <ComboBox /> 
    </DataGridTextColumn.Header> 
    </DataGridTextColumn> 
+0

由於用於定義這些頭文件的CSV文件的自定義格式,我必須在代碼中設置頭文件。我如何才能實現您的XAML所做的,但在代碼中? – peacemaker

+0

@peacemaker下面是你如何在代碼中執行它:myDataGrid.Columns.Add(new DataGridTextColumn {Header = new ComboBox(),Binding = myBinding}); – Eirik

+0

使用Eirik建議的解決方案。它會幫助你把它整理出來。 – Smaug