对于我正在使用的窗口宽度:
SizeToContent="Width"
但是对于高度,我用手硬编码。但如何才能让窗口最多显示 N 个数据网格项呢?
因此,如果项目超过 20 个,则仅显示其中的 20 个,如果少于则显示全部。
只需在窗口上使用
SizeToContent="WidthAndHeight" MaxHeight="400"
,并使用适当的 MaxHeight
值,以便 DataGrid
中仅可见 20 个项目。
这样所有项目都将被加载,如果项目超过 20 个,将显示滚动条,并且窗口将针对任何较少数量的项目正确调整大小。根据您上面的评论,我认为您正在努力实现这一目标。
当然,如果窗口仍然需要手动完全调整大小,则此解决方案将不起作用。
编辑
既然上面的建议无法应用,这里还有一个...
因此,根据所有信息,如果我不能或不想使用分页,我会这样做:
主窗口.xaml
<Window ...
Title="MainWindow"
SizeToContent="WidthAndHeight">
<Grid>
<DataGrid Name="dataGrid" />
</Grid>
</Window>
MainWindow.xaml.cs
public partial class MainWindow : Window
{
// Total number of items
private int dataCount = 0;
...
private void AddDataToGrid(SomeData data)
{
// Update item counter
dataCount += 1;
// Auto size if now there are 20 or less items, otherwise do not change size
this.SizeToContent = dataCount <= 20 ? SizeToContent.WidthAndHeight : SizeToContent.Width;
// Update grid data
this.dataGrid.Items.Add(data);
}
private void RemoveDataFromGrid(SomeData data)
{
// Update item counter
dataCount -= 1;
// Auto size if now there are 20 or less items, otherwise do not change size
this.SizeToContent = dataCount <= 20 ? SizeToContent.WidthAndHeight : SizeToContent.Width;
// Update grid data
this.dataGrid.Items.Remove(data);
}
}
基本上,我会添加添加或删除
DataGrid
项目的方法,然后每次检查项目总数,并根据需要将 SizeToContent
值设置为 WidthAndHeight
或 来使窗口高度适合内容Width
。