正如标题所提到的,我正在创建一个DataGrid
如下:
dataGrid = new DataGrid();
dataGrid.ItemsSource = dSet.Tables[i].DefaultView;
并将其添加到WrapPanel
. 一切正常,但我需要禁用多行行上的文本换行并限制列宽并让它们显示三个点。
我尝试设计样式,DataGridCell
但没有任何效果对我有用。
有人能帮忙吗?
注意:我无法创建预定义的列,因为这是一个动态网格,我无法在它将填充哪些列之前确定。
您可以处理该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] 删除。
我来说两句