我注意到我的项目中的DataGrid列不再延伸到DataGrid宽度。我唯一做的就是更改Assmbly名称。在XAML设计师中,他们很紧张。
<DataGrid x:Name="dg" Grid.Row="4" RowHeaderWidth="0" AutoGenerateColumns="False"
HorizontalGridLinesBrush="AliceBlue" AlternationCount="2">
<DataGrid.Columns>
<DataGridTemplateColumn Header="File" IsReadOnly="True" Width="*" CanUserSort="True" SortMemberPath="File" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FileName}" MouseDown="FileName_MouseDown" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
//other columns are similar
</DataGrid.Columns>
</DataGrid>
我尝试过的:
我想到了一些想法。无论多么愚蠢,请提出任何想法。谢谢!
我解决了它:
唯一的区别是我在初始化后有好的版本MyWindow.Show();
。我尝试了多次评论和取消注释这一行,这是修复。
MyWindow只是xaml中定义的窗口的名称,而show()不执行任何操作,因为无论如何窗口都是可见的。
如果其他人有这个问题,只需在InitializeComponent()之后添加WindowName.Show()
;
除非你们其中一个人能想到这个原因,否则我认为这是一个错误。
以供参考:
当DataGrid在ScrollViewer中时,显然会发生这种情况。所以,正如this other answer所说,如果你不需要水平滚动条,你可以禁用它:
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
否则,您必须为DataGrid提供宽度。您可以根据sa_ddam213在链接帖子中的答案创建一个虚拟元素:
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid x:Name="grid" MinWidth="200">
<DataGrid Width="{Binding ElementName=grid, Path=ActualWidth}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Column A" Width="1*"/>
<DataGridCheckBoxColumn Header="Column B" Width="1*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</ScrollViewer>