我使用DataGrid显示多个字段,其中一个是多行描述。网格显示数据就好了,直到我尝试通过设置HeadersVisibility="Column"
来隐藏标题行。标题行消失但是当我滚动时,行标题会重新出现一些随机行。
我已将其缩小到显示多行描述的列。只要我离开这一栏,我就没有这个问题。我尝试用"\r\n"
和"\n"
分隔线条,但都没有效果。 DataGrid是否支持多行文本字段?
下面是一张图片,显示正在发生的事情和我用来创建网格的XAML。
<DataGrid DataContext="{StaticResource personRepository}"
ItemsSource="{Binding PersonList, Mode=OneWay}"
AutoGenerateColumns="False"
HeadersVisibility="Column"
CanUserSortColumns="False"
SelectionMode="Extended"
IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Width="80" Binding="{Binding Id, Mode=OneWay}" />
<DataGridTextColumn Header="First Name" Width="150" Binding="{Binding FirstName, Mode=OneWay}" />
<DataGridTextColumn Header="Last Name" Width="150" Binding="{Binding LastName, Mode=OneWay}" />
<DataGridTextColumn Header="Description" Width="*" Binding="{Binding Description, Mode=OneWay}" />
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:16)
尝试设置RowHeaderWidth = 0
而不是HeaderVisibility
答案 1 :(得分:1)
在这种情况下,lvCurDocFields是父ListView。这里的缺点是您需要为其他列设置硬宽度,然后其他列的总数是ConverterParameter。如果你有一个垂直滚动条然后离开大约20. GridView是一种痛苦,但我喜欢演示文稿,因为只读它比DataGrid更有效
<GridViewColumn Width="{Binding ElementName=lvCurDocFields, Path=ActualWidth, Converter={StaticResource widthConverter}, ConverterParameter=100}">
[ValueConversion(typeof(double), typeof(double))]
public class WidthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// value is the total width available
double otherWidth;
try
{
otherWidth = System.Convert.ToDouble(parameter);
}
catch
{
otherWidth = 100;
}
if (otherWidth < 0) otherWidth = 0;
double width = (double)value - otherWidth;
if (width < 0) width = 0;
return width; // columnsCount;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}