1
我已經搜索了一段時間,並且在這個主題上有很多帖子,但沒有一篇似乎給了我正確的答案。如何將數據表動態綁定到網格並將數據包裝在某些列中
我創建的窗體上DataGrid中簡單地爲:
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" VerticalAlignment="Top" Width="860">
<DataGrid ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Top"
Name="DGI"
Height="700"
ItemsSource="{Binding}"
Background="LightGray" RowBackground="LightYellow" AlternatingRowBackground="LightBlue">
</DataGrid>
</StackPanel>
現在,我在我的代碼綁定數據如下:
private void btnUpdateGridI_Click(object sender, RoutedEventArgs e)
{
DGI.DataContext = null;
IEnumerable<DataRow> query =
from punch in dspl.Tables[0].AsEnumerable()
where punch.Field<String>("TOS").Contains(cmbTOSI.SelectedItem.ToString()) &&
punch.Field<String>("BU").Contains(cmbBUI.SelectedItem.ToString()) &&
punch.Field<String>("CLOSED").Contains(cmbClosedI.SelectedItem.ToString()) &&
punch.Field<String>("CAT").Contains(cmbCATI.SelectedItem.ToString())
select punch;
try
{
DataTable boundTable = query.CopyToDataTable<DataRow>();
DGI.DataContext = boundTable;
lbltotalitemsI.Content = boundTable.Rows.Count.ToString() + " ITEMS";
DGI.Columns[6].MaxWidth = 350;
}
catch
{
MessageBox.Show("No data exists for the current selection.");
lbltotalitemsI.Content = "0 ITEMS";
DGI.DataContext = null;
}
}
我試圖使文本在第6列包裝。我能夠定義它的最大寬度,但是對於包裝文本,大多數在線源指的是在數據網格中使用TextBlock。
是否有一個簡單的方法來動態地做到這一點?我會想爲多列做這個。
在此先感謝! Wouter
嗨,謝謝你的回答,答案與我發現的其他帖子一致。但是,我無法對列進行硬編碼,因爲它們可能會更改。 – 2012-07-31 06:03:40