将 TextBox 放入具有水平滚动的 ScrollViewer 内的 StackPanel 时,我遇到了一些奇怪的调整大小行为。
StackPanel 中的项目应该拉伸(stretch)到网格列的整个宽度。网格列应占窗口的一半。
更改窗口大小时,TextBox 之后的所有同级都不能正确调整大小。
这是我的代码的简化版本,它重现了该问题:
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid>
<StackPanel Background="Gray" Grid.Column="0">
<Border Background="Blue" Height="40"/>
<TextBox/>
<Border Background="RoyalBlue" Height="40"/>
<Border Background="Red" Height="40"/>
</StackPanel>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
</Grid>
</ScrollViewer>
这是 xaml 在 Windows 10 中正确呈现的内容:
如果我调整窗口大小,TextBox 之后的元素不会正确调整大小。如果您继续尝试几次,它们会自行修复。
如果我删除 TextBox 控件并保留 Border 元素,它们都会正确调整大小。 TextBox 控件以某种方式破坏了它之后的边框。我还可以使用数字控件进行复制。
如果我删除
HorizontalScrollBarVisibility="Auto"
从 ScrollViewer,它解决了这个问题。我需要这个 View 能够自动水平滚动,所以这对我不起作用。如果我删除 ScrollViewer 它也会修复它。
最佳答案
尝试使用 Grid
和行而不是 StackPanel
因为Grid
占用尽可能多的空间,但 StackPanel
- 他需要的空间
关于xaml - UWP XAML 在 ScrollViewer 的 StackPanel 中使用水平滚动调整 TextBox 的大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44089028/