当我在WPF应用程序中最大化窗口时,我的DataGrid并没有占用整个空间。这就是我创建布局的方式
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Width="265">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="200" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Date From:" />
<Label Grid.Row="1" Grid.Column="0" Content="Date To:" />
<DatePicker Grid.Column="1" Grid.Row="0" Margin="3" x:Name="DateFrom" />
<DatePicker Grid.Column="1" Grid.Row="1" Margin="3" x:Name="DateTo" />
<Button Grid.Column="1" Grid.Row="2" HorizontalAlignment="Right"
MinWidth="80" Margin="3" Content="Send" Click="PopulateGrid" x:Name="BtnPopulateGrid"/>
</Grid>
<StackPanel Grid.Row="0" Grid.Column="1">
<DataGrid Width="Auto" x:Name="Grid" Height="553"
Padding="10 0 0 0" VerticalScrollBarVisibility="Visible" Margin="10,0,-707,0" />
</StackPanel>
</Grid>
可以帮忙吗?我是WPF的新手
答案 0 :(得分:2)
尝试添加数据网格ColumnWidth="*"
它将所有列扩展到可用空间,并且数据网格将填充其父级
第一个网格的第二个ColumnDefinition应该为<ColumnDefinition Width="*" />
正如@Zacos在我的答案评论中所说,您必须删除Width
答案 1 :(得分:1)
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="200" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Date From:" />
<Label Grid.Row="1" Grid.Column="0" Content="Date To:" />
<DatePicker Grid.Column="1" Grid.Row="0" Margin="3" x:Name="DateFrom" />
<DatePicker Grid.Column="1" Grid.Row="1" Margin="3" x:Name="DateTo" />
<Button Grid.Column="1" Grid.Row="2" HorizontalAlignment="Right" MinWidth="80" Margin="3" Content="Send" Click="PopulateGrid" x:Name="BtnPopulateGrid"/>
</Grid>
<Grid Grid.Row="0" Grid.Column="1">
<DataGrid x:Name="Grid" Padding="10 0 0 0" VerticalScrollBarVisibility="Visible" />
</Grid>
</Grid>
首先,如果要使数据网格自动填充容器,则需要使用Grid,而不是StackPanel,还需要将数据网格大小设置为自动。
编辑: 正如@Erjon所说的:当您只有一个DataGrid时不必使用容器,但是如果您的DataGrid中包含更多组件,则Grid是代替StackPanel的更好的容器选择。
您的主要GridDefination大小设置为“自动”,这是错误的。如果要进行定性设计,则需要使用“ *”。自动表示“用其子项设置此控件的大小”。