我有以下DataGrid,我希望自动拉伸列大小,以便将整个窗口大小与所有现有列一起使用。实际上,我的五列宽度是最小的。这意味着我有一个640像素的窗口大小,其中五列填充360像素。
<DataGrid Name="dgPerson" ItemsSource="{Binding PersonObject}" AutoGenerateColumns="False" CanUserAddRows="false">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" IsReadOnly="True" />
<DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" IsReadOnly="True" />
<DataGridTextColumn Header="Email" Binding="{Binding Email}" />
<DataGridTextColumn Header="Facebook" Binding="{Binding Facebook}" />
<DataGridTemplateColumn Header="Action">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Click="btnEditPerson_Click">
<StackPanel Orientation="Horizontal">
<Rectangle Width="12" Height="12"
Fill="{Binding RelativeSource={RelativeSource AncestorType=Button}, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill"
Visual="{StaticResource appbar_refresh}" />
</Rectangle.OpacityMask>
</Rectangle>
</StackPanel>
</Button>
<Button Click="btnDeletePerson_Click">
<StackPanel Orientation="Horizontal">
<Rectangle Width="12" Height="12"
Fill="{Binding RelativeSource={RelativeSource AncestorType=Button}, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill"
Visual="{StaticResource appbar_delete}" />
</Rectangle.OpacityMask>
</Rectangle>
</StackPanel>
</Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:1)
您可以将所有DataGridTextColumn上的宽度设置为&#34; *&#34;
<DataGridTextColumn Width="*" ... />
这是一个相对大小,如果所有列都设置为*,那么它们相对于父窗口的大小都相同。
您可以更进一步,在*前加上一个数字,例如:
<DataGridTextColumn Width="1*" ... />
<DataGridTextColumn Width="2*" ... />
在这种情况下,第二列占用的空间量是第一列的两倍。