WPF DataGrid 自动换行

weixin_38051479 2019-06-08 02:42:35
new SqlDataAdapter().Fill(dataTable);
System.Windows.Controls.DataGrid.ItemsSource = dataTable.DefaultView;
通过这种方式将 DataTable 绑定到 DataGrid 中并显示,如何让单元格中,内容超出列宽的文本自动换行。
...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38102396 2019-06-10
  • 打赏
  • 举报
回复
那就用 event 來做
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var table = new DataTable(); table.Columns.Add("Description"); table.Columns.Add("Name"); for(int i =0; i < 10; i ++) { var row = table.NewRow(); row[0] = $"PPPPPPP {i}, KKKKKKKKKK {i}"; row[1] = i.ToString(); table.Rows.Add(row); } dataGrid.ItemsSource = table.DefaultView; } private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.Column is DataGridTextColumn column) { var style = new Style(typeof(TextBlock)); style.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap)); column.ElementStyle = style; } } }

<Window x:Class="WpfDataGridTextWrappingSample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfDataGridTextWrappingSample" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <DataGrid AutoGenerateColumns="True" x:Name="dataGrid" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn" /> </Window>

在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/
weixin_38069146 2019-06-10
  • 打赏
  • 举报
回复
那就用 event 來做
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var table = new DataTable(); table.Columns.Add("Description"); table.Columns.Add("Name"); for(int i =0; i < 10; i ++) { var row = table.NewRow(); row[0] = $"PPPPPPP {i}, KKKKKKKKKK {i}"; row[1] = i.ToString(); table.Rows.Add(row); } dataGrid.ItemsSource = table.DefaultView; } private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.Column is DataGridTextColumn column) { var style = new Style(typeof(TextBlock)); style.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap)); column.ElementStyle = style; } } }

<Window x:Class="WpfDataGridTextWrappingSample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfDataGridTextWrappingSample" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <DataGrid AutoGenerateColumns="True" x:Name="dataGrid" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn" /> </Window>

在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/
weixin_38101966 2019-06-09
  • 打赏
  • 举报
回复
你好,DataTable 中的内容是未知的,无法提前写好一个类,及在 xaml 中写好 DataGridTextColumn。
如果是这种方式,我是否需要这样做:
        在后台遍历 DataTable,自动创建 DataGridTextColumn 并添加到 DataGrid.Columns.Items 中。
weixin_38096180 2019-06-08
  • 打赏
  • 举报
回复
<DataGrid Margin="16" ItemsSource="{Binding People}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="姓名" Width="80" Binding="{Binding Name, Mode=TwoWay }"> <DataGridTextColumn.ElementStyle > <Style TargetType="TextBlock" > <Setter Property="Foreground" Value="Blue"/> <Setter Property="TextWrapping" Value="Wrap" /> </Style> </DataGridTextColumn.ElementStyle> <DataGridTextColumn.EditingElementStyle > <Style TargetType="TextBox" > <Setter Property="Foreground" Value="Red"/> <Setter Property="TextWrapping" Value="Wrap" /> </Style> </DataGridTextColumn.EditingElementStyle> </DataGridTextColumn>

自訂 Element Style 類似上方的 xaml
在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧