wpf - StackPanel 干扰按边距调整大小
问题描述
我有一个带有TabControl
. 每个TabItem
上都有一个DataGrid
. 宽度和高度未设置,大小由边距控制,因此它与选项卡一起调整大小。
<TabItem Name="tbRails" Header="Rails">
<DataGrid x:Name="dgRails" Margin="5,30,5,5" ItemSource=...
这一切都很好,直到我需要CheckBox
在其中一个标签上放一个。我们只能在 a 上生一个孩子,TabItem
所以我添加了 aStackPanel
并放入了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=...
执行此操作后,数据网格没有滚动条并且不响应鼠标滚轮。我可以单击单元格,它被选中,我可以向下箭头键,直到它从底部消失。窗口的宽度大小与以前一样,但它似乎正在调整其高度以适应内容(大约 2600 行)。
有没有人见过这个,我们如何解决它?我可以设置网格的高度,它工作得很好,但它不再调整自己的大小来匹配父级。
解决方案
使用 aGrid
作为面板而不是StackPanel
. 堆栈面板将以正无穷大来测量其子级,这不会限制它们的高度。换句话说,DataGrid
将缩放以显示其所有记录,因此不会有滚动查看器。
将 aGrid
与RowDefinition
下面的 s 一起使用,CheckBox
将调整大小以适应其内容,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>
推荐阅读
- rdf - OWL/SHACL 和 RIF 的区别
- kubernetes - 如何在 Kubernetes 中删除守护程序集和服务
- twitter-bootstrap - bootstrap 4 导航栏固定在顶部,在滑块上透明,如果滑块没有背景,则为背景
- tensorflow - 在 macOS el capitan 的 Tensorflow 0.12.0 版本中运行 CNN 的问题
- git - 在 SourceTree 中签出旧版本后看不到最新的 GIT 提交,没有远程
- c# - Humanizer 无法在 C# 中对意大利语单词进行单数化或复数化
- java - 使用 java.net.URLEncoder 时不要编码欧元符号
- bash - 用于将当前迭代的值与上一次迭代的值进行比较的 Shell 脚本
- c# - 使用 EF Code First 的 AutoMapper 无限循环
- ios - 你如何以编程方式按下“使用照片”按钮