带星形列的DataGrid调整整个DataGrid的大小
本文关键字:DataGrid 调整 | 更新日期: 2023-09-27 18:08:49
我有一个有两列的WPF DataGrid;我想让第二列自动适配网格,所以我将其宽度设置为"*"。但是,在运行时,DataGrid的大小会调整到一个可笑的宽度。
这是我的基本标记,(我认为)删除了无关的控件和属性:
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Grid>
<StackPanel>
<DataGrid Name="MyGrid" AutoGenerateColumns="False"
CanUserAddRows="False" CanUserReorderColumns="False"
CanUserResizeColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" Width="Auto" Binding="{Binding Field1}"/>
<DataGridTextColumn Header="Column 2" Width="*" Binding="{Binding Field2}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Grid>
</ScrollViewer>
</Grid>
我怀疑问题在于DataGrid在ScrollViewer中。我尝试将ScrollViewer的宽度设置为DataGrid宽度:
Width="{Bidning ElementName=MyGrid, Path=ActualWidth}"
在这篇文章中建议,但没有运气。我还尝试将HorizontalScrollBarVisibility设置为Disabled,但随后一切都消失了(严重)。
我还应该提到所有这些都是在一个UserControl,它位于另一个UserControl,然后坐在窗口,这可能与一切"消失"有关(我怀疑宽度已经疯了,一切都是'off the Window ')。
尝试删除DataGrid之前的所有内容,简化布局。DataGrid已经在其默认模板中嵌入了一个ScrollViewer。另外,使用StackPanel,你允许它的孩子来填补所有可用的空间- StackPanel伸展相应的内容的大小。因此,您的DataGrid
延伸到无穷大。
我还将DataGrid的Name属性更改为x:Name,原因如下:在WPF中,x:Name和Name属性之间有什么区别?
<DataGrid
x:Name="MyGrid"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserReorderColumns="False"
CanUserResizeColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" Width="Auto" Binding="{Binding Field1}"/>
<DataGridTextColumn Header="Column 2" Width="*" Binding="{Binding Field2}"/>
</DataGrid.Columns>
</DataGrid>