我已经搜索了一段时间,并且有很多关于这个主题的帖子,但似乎没有一个能给我正确的答案。
我在表单上创建了一个数据网格,如下所示:
<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。
有没有一种简单的方法可以动态地做到这一点?我想为多个列执行此操作。