如何解决动态添加控件时不要调整网格大小
我有一个网格,其列大小设置为 *
以在调整窗口大小时自动调整其大小。我在网格内有一个堆栈面板。但是,当我向其添加用户控件时,我不希望它调整大小,我只想显示一个滚动条,我尝试了以下操作,但似乎不起作用:
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="*" MinWidth="690"/>
<ColumnDeFinition Width="Auto" MinWidth="170"/>
</Grid.ColumnDeFinitions>
<Grid.RowDeFinitions>
<RowDeFinition Height="Auto"/>
<RowDeFinition Height="*" MinHeight="221"/>
</Grid.RowDeFinitions>
<Grid Grid.Column="0"
Grid.Row="1"
Margin="10,5,10,0">
<ScrollViewer HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible">
<StackPanel x:Name="ServersListPanel"/>
</ScrollViewer>
</Grid>
解决方法
将 ScrollViewer 放在 DockPanel 中,移除 Grid 上的 MinWidth 和 MinHeight 约束,并将 ScrollBarVisibility 设置为“Auto”:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Column="0"
Grid.Row="1"
Margin="10,5,10,0">
<DockPanel>
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"
DockPanel.Dock="Top">
<StackPanel x:Name="ServersListPanel" />
</ScrollViewer>
</DockPanel>
</Grid>
</Grid>
问题是因为 ScrollViewer 认为它具有无限大小,因为没有任何东西限制它的大小。设置 ScrollViewer 或其包含 ScrollViewer 的父控件之一的宽度/高度将限制 ScrollViewer 的大小,并且当其包含的 StackPanel 需要更多空间来显示其内容时,内容将是可滚动的,并且滚动条将出现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。