使用Syncfusion SfDataGrid时ColumnSizer设为Auto的列宽异常问题
WPF中Syncfusion SfDataGrid列宽自动适配异常问题
我在WPF应用中使用Syncfusion SfDataGrid,设置ColumnSizer="Auto"后,预期所有列会自动适配内容宽度,但实际ARTICLE和LIBELLE列的内容右侧被截断,效果如下:

我的XAML代码如下:
<sc:SfDataGrid x:Name="Ventes_Det_Dt" AutoGenerateColumns="False" AllowFiltering="False" Background="White" ColumnSizer="Auto" Foreground="Black" Margin="5" Grid.Column="1"> <sc:SfDataGrid.Columns> <sc:GridTextColumn HeaderText="ARTICLE" MappingName="art"/> <sc:GridTextColumn HeaderText="LIBELLE" MappingName="lib"/> <sc:GridTextColumn HeaderText="QTE" MappingName="qte"/> <sc:GridTextColumn HeaderText="POIDS NET" MappingName="pds"/> </sc:SfDataGrid.Columns> </sc:SfDataGrid>
解决方法:
适配所有行内容:默认
AutoFitMode仅计算可见行宽度,改为AllRows会遍历所有行计算最大内容宽度,在SfDataGrid中添加属性:AutoFitMode="AllRows"设置最小列宽:给截断的列手动指定
MinWidth,避免宽度被过度压缩:<sc:GridTextColumn HeaderText="ARTICLE" MappingName="art" MinWidth="180"/> <sc:GridTextColumn HeaderText="LIBELLE" MappingName="lib" MinWidth="250"/>确保内容单行显示:若内容包含自动换行,会导致宽度计算偏差,给列添加
TextWrapping="NoWrap":<sc:GridTextColumn HeaderText="ARTICLE" MappingName="art" TextWrapping="NoWrap"/>数据加载后手动触发适配:如果数据是异步加载,在数据绑定完成后调用代码触发列宽适配:
Ventes_Det_Dt.Dispatcher.BeginInvoke(new Action(() => { Ventes_Det_Dt.Columns.AutoFitAllColumns(); }));
内容的提问来源于stack exchange,提问作者Jean François Collombet
相关产品推荐
相关产品推荐

