StackPanel干扰按大小调整大小

时间:2020-09-03 15:49:27

标签: wpf xaml datagrid stackpanel

我有一个带有TabControl的应用。在每个TabItem上有一个DataGrid。宽度和高度未设置,大小受边距控制,因此其大小与选项卡一起。

<TabItem Name="tbRails" Header="Rails">
    <DataGrid x:Name="dgRails" Margin="5,30,5,5" ItemSource=...

一切正常,直到我需要在其中一个标签上放置CheckBox为止。我们在TabItem上只能生一个孩子,因此我添加了StackPanel并放入了CheckBoxDataGrid

<TabItem Name="tbRails" Header="Rails">
    <StackPanel Name="pnlRails" Margin="10">
        <CheckBox Name="chkCollapseItems" Content="Collapse Items" Margin="15" Checked="chkCollapseItems_Checked" ... />
        <DataGrid  x:Name="dgRails" Margin="5,30,5,5" ItemSource=...

完成此操作后,数据网格将没有滚动条,并且不会响应鼠标滚轮。我可以单击该单元格,然后将其选中,然后向下箭头键直至其从底部消失。窗口的宽度大小与以前一样,但是似乎正在调整其高度以适合内容(大约2600行)。

以前有没有人看过这个,我们如何解决?我可以设置网格的高度,它的工作原理很好,但是它自身的大小不再匹配父级。

1 个答案:

答案 0 :(得分:0)

使用Grid作为面板而不是StackPanel。堆栈面板将以正无穷大度量其子代,这不会限制其高度。换句话说,DataGrid将按比例缩放以显示其所有记录,因此将没有滚动查看器。

使用Grid和下面的RowDefinitionCheckBox的大小将适合其内容,而DataGrid将获得其余的 TabItem中的>可用空间 。如果此可用空间不足以显示所有记录,它将自动显示滚动条。

<TabItem Name="tbRails" Header="Rails">
   <Grid>
      <Grid.RowDefinitions>
         <RowDefinition Height="Auto"/>
         <RowDefinition/>
      </Grid.RowDefinitions>
      <CheckBox Grid.Row="0" Name="chkCollapseItems" Content="Collapse Items" Margin="15" Checked="chkCollapseItems_Checked" ... />
      <DataGrid Grid.Row="1"  x:Name="dgRails" Margin="5,30,5,5" ItemSource= ... />
   </Grid>
</TabItem>
相关问题