在动态填充的 DataGrid WPF 上禁用文本换行

拉沙德

正如标题所提到的,我正在创建一个DataGrid如下:

dataGrid = new DataGrid();
dataGrid.ItemsSource = dSet.Tables[i].DefaultView;

并将其添加到WrapPanel. 一切正常,但我需要禁用多行行上的文本换行并限制列宽并让它们显示三个点。

我尝试设计样式,DataGridCell但没有任何效果对我有用。

有人能帮忙吗?

注意:我无法创建预定义的列,因为这是一个动态网格,我无法在它将填充哪些列之前确定。

毫米8

您可以处理该AutoGeneratingColumn事件并使用转换器将长的string转换为较短的:

dataGrid = new DataGrid();
dataGrid.ItemsSource = dSet.Tables[i].DefaultView;
LongTextConverter LongTextConverter = new LongTextConverter();
dataGrid.AutoGeneratingColumn += (ss, ee) => 
{
    DataGridTextColumn column = ee.Column as DataGridTextColumn;
    column.Binding = new Binding(ee.PropertyName) { Converter = LongTextConverter };
};

LongTextConverter.cs:

public class LongTextConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string s = value as string;
        if (!string.IsNullOrEmpty(s) && s.Length > 10)
            return $"{s.Substring(0, 7)}...";

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章