xaml - UWP XAML 在 ScrollViewer 的 StackPanel 中使用水平滚动调整 TextBox 的大小问题

标签 xaml uwp win-universal-app uwp-xaml

将 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 中正确呈现的内容:

Example 1

如果我调整窗口大小,TextBox 之后的元素不会正确调整大小。如果您继续尝试几次,它们会自行修复。

Example 2

如果我删除 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/

相关文章:

c# - 相当于 Prism ViewModels 中的 WPF DependencyProperties

c# - 从窗体打开 WPF 窗口后,WinForms 应用程序更改其缩放比例

c# - 如果连接意外断开,则无法处理SocketStream上的应用程序崩溃

c# - Windows.Web.Http.HttpClient 抛出 COMException c#

c# - 在锁定文件中找不到所需的信息。确保你的目标中提到了 .NETCore,Version=v5.0/win10-anycpu

c# - 访问 HubSection 内的数据

c# - UIElement 相对于 Window 的位置

c# - UWP - MediaPlayerElement 与 MediaElement

c# - 为什么动画 "Height"属性不能像 "Opacity"属性一样对 Windows Universal App 起作用?

windows - 带有通用应用程序的系统托盘/任务栏图标/通知图标