StackPanel 干扰按边距调整大小
StackPanel interferes with sizing by margin
我有一个 TabControl
的应用程序。每个 TabItem
上都有一个 DataGrid
。未设置宽度和高度,大小由边距控制,因此它与选项卡一起调整大小。
<TabItem Name="tbRails" Header="Rails">
<DataGrid x:Name="dgRails" Margin="5,30,5,5" ItemSource=...
一切正常,直到我需要在其中一个选项卡上放置 CheckBox
。我们只能在 TabItem
上有一个 child 所以我添加了一个 StackPanel
并放入 CheckBox
和 DataGrid
.
<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=...
执行此操作后,数据网格没有滚动条并且不响应鼠标滚轮。我可以单击该单元格并将其选中,然后我可以向下箭头键直到它从底部消失。 window 的宽度大小与之前一样,但它似乎正在调整其高度以适应内容(大约 2600 行)。
有没有人以前见过这个问题,我们该如何解决?我可以设置网格的高度,它工作得很好,但它不再调整自己以匹配 parent.
使用 Grid
作为面板而不是 StackPanel
。堆栈面板将以正无穷大测量其子项,这不会限制它们的高度。换句话说,DataGrid
将缩放以显示其所有记录,因此不会有滚动查看器。
将 Grid
与下面的 RowDefinition
一起使用,CheckBox
将调整大小以适合其内容,DataGrid
将获得 [=23] 的其余部分=]available space in the TabItem
。当这个available space不足以显示所有记录时,它会自动显示滚动条。
<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>
我有一个 TabControl
的应用程序。每个 TabItem
上都有一个 DataGrid
。未设置宽度和高度,大小由边距控制,因此它与选项卡一起调整大小。
<TabItem Name="tbRails" Header="Rails">
<DataGrid x:Name="dgRails" Margin="5,30,5,5" ItemSource=...
一切正常,直到我需要在其中一个选项卡上放置 CheckBox
。我们只能在 TabItem
上有一个 child 所以我添加了一个 StackPanel
并放入 CheckBox
和 DataGrid
.
<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=...
执行此操作后,数据网格没有滚动条并且不响应鼠标滚轮。我可以单击该单元格并将其选中,然后我可以向下箭头键直到它从底部消失。 window 的宽度大小与之前一样,但它似乎正在调整其高度以适应内容(大约 2600 行)。
有没有人以前见过这个问题,我们该如何解决?我可以设置网格的高度,它工作得很好,但它不再调整自己以匹配 parent.
使用 Grid
作为面板而不是 StackPanel
。堆栈面板将以正无穷大测量其子项,这不会限制它们的高度。换句话说,DataGrid
将缩放以显示其所有记录,因此不会有滚动查看器。
将 Grid
与下面的 RowDefinition
一起使用,CheckBox
将调整大小以适合其内容,DataGrid
将获得 [=23] 的其余部分=]available space in the TabItem
。当这个available space不足以显示所有记录时,它会自动显示滚动条。
<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>