C# 使用包含包装文本块的DataGrid调整大小问题
我对.NET4.0DataGrid有一个非常令人不安的问题。我有比例模板列,其中包含启用了textWrapping的TextBlock 问题是,数据网格的高度在加载时是不正确的(它的大小就像textblock都是以最大值包装的一样),并且在调整大小时不会更新它们的大小。这似乎是一个布局问题(比例大小未解决时,似乎会调用MeasureOverride和ArrangeOverride,之后也不会调用…),但我无法解决它 下面是一个显示问题的简化代码: main window.xamlC# 使用包含包装文本块的DataGrid调整大小问题,c#,wpf,layout,datagrid,C#,Wpf,Layout,Datagrid,我对.NET4.0DataGrid有一个非常令人不安的问题。我有比例模板列,其中包含启用了textWrapping的TextBlock 问题是,数据网格的高度在加载时是不正确的(它的大小就像textblock都是以最大值包装的一样),并且在调整大小时不会更新它们的大小。这似乎是一个布局问题(比例大小未解决时,似乎会调用MeasureOverride和ArrangeOverride,之后也不会调用…),但我无法解决它 下面是一个显示问题的简化代码: main window.xaml <Win
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="700" Width="525">
<StackPanel Width="500">
<Button Content="Add DataGrid" Click="Button_Click" />
<ItemsControl x:Name="itemsControl">
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Control.Margin" Value="5" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</StackPanel>
}
我终于想出了一个相当糟糕的解决方案,但至少它起作用了:我正在通过计算正确的值手动更新网格的高度,同时考虑行高度、网格填充、网格边框和列头错误高度。我需要在OnPropertyChanged(用于填充和网格边框)、DataGridColumn.SizeChanged、DataGridColumn.RowUnload、ColumnHeaderPresenter.SizeChanged和其他一些文件上更新它
唯一的问题是它与默认DataGrid ControlTemplate一起正常工作,但如果模板要更改网格渲染,它将不再正确。最终找到了一个解决方案:在DataGrid上将CanContentScroll设置为false修复了该问题
<Setter Property="ScrollViewer.CanContentScroll" Value="False" />
<Setter Property="ScrollViewer.CanContentScroll" Value="False" />