滚动查看器无法在网格上工作

2024-05-24

您好,我正在 Windows 10 中学习 UWP,我需要滚动网格。 他们有两段代码很相似,我的本意是在grid2中滚动,第一段代码:

 <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <CommandBar VerticalAlignment="Top" Grid.Row="0">
            <CommandBar.Content>
                <TextBlock Name="CurrentDateText" Margin="10,10,0,0" HorizontalAlignment="Left" VerticalAlignment="Bottom" FontSize="22" FontStretch="ExtraExpanded"/>
            </CommandBar.Content>
            <CommandBar.PrimaryCommands>
                <AppBarButton Name="button1" Icon="Forward" Label="button" Click="NextButton_Click_1"/>
            </CommandBar.PrimaryCommands>
        </CommandBar>

           <Grid Grid.Row="1" Grid.ColumnSpan="3"  Name="Grid1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
        </Grid>

                <ScrollViewer x:Name="Scroll" Grid.Row="2" VerticalAlignment="Top" VerticalScrollBarVisibility="Auto" VerticalScrollMode="Enabled">
            <Grid Grid.ColumnSpan="3" Name="Grid2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
        </Grid>
        </ScrollViewer>
    </Grid>

在第二段代码中:

 <Grid>

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!-- Header -->
        <Rectangle Grid.Row="0" Grid.ColumnSpan="3"/>
        <TextBlock Grid.Column="1" Name="CurrentDateText"  />


            <Button Name="NextButton" Grid.Column="2" Content="&gt;" 
                    HorizontalAlignment="Right" Margin="20" 
                    Click="NextButton_Click_1"/>

                           <ScrollViewer x:Name="Scroll" VerticalAlignment="Top" Grid.Row="1" VerticalScrollBarVisibility="Hidden">
                <Grid Grid.ColumnSpan="3" Name="Grid2">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="auto"/>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                </Grid>
            </ScrollViewer>

        </Grid>

第一段代码不起作用,第二段代码起作用。 我不明白出了什么问题,我不明白为什么它首先不起作用。 谢谢


对于初学者来说这是一个常见的错误,您不应该为此感到难过。关于滚动查看器要记住的一点是它必须有高度和宽度。有时您设置高度和宽度。有时您可以根据容器的大小来设置高度和宽度。正确的?

看这个:

<ScrollViewer>
    <Grid Height="1000" />
</ScrollViewer>

在该示例中,滚动查看器的表现就像它根本不存在一样。为什么?因为它没有高度和宽度。在这种情况下,它的大小将与其内容相同。这基本上就是您所看到的。

看这个:

<ScrollViewer Height="100">
    <Grid Height="1000" />
</ScrollViewer>

这可以很好地垂直滚动,但永远不会水平滚动。你能明白为什么吗?因为没有宽度。有时这是完美的场景。但这是另一件让开发人员措手不及的事情。

看这个:

<StackPanel>
    <ScrollViewer>
        <Grid Height="1000" />
    </ScrollViewer>
<StackPanel>

这是另一个吸引很多开发人员的场景。为什么?因为堆栈面板的高度是无限的。由于高度和宽度基本上由容器继承,因此滚动查看器永远没有理由滚动,因为它已经允许增长到无限大小。

看这个:

<Grid>
    <ScrollViewer>
        <Grid Height="1000" />
    </ScrollViewer>
<Grid>

完美的。现在,滚动查看器将按照您想要的方式滚动,因为滚动查看器的高度和宽度是由其容器(网格)的高度和宽度继承的。而且由于网格将自身限制为窗口的大小,因此您的形状非常好。

当然,您可以通过将网格放入堆栈面板来破坏网格的行为!除非您知道自己在做什么并造成什么后果,否则不要这样做。如果您是 XAML 新手,您可能会喜欢这个免费课程 https://channel9.msdn.com/Series/win-store-app-essentials-csharp-refresh/02在微软虚拟学院。

我希望这有帮助。

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

滚动查看器无法在网格上工作 的相关文章

随机推荐

  • android 想要导航到多个目的地吗?

    有什么办法可以导航到多个目的地吗 就像你可以在谷歌地图上做的那样 您可能知道 您可以使用以下未记录的方式导航到目的地 startActivity new Intent Intent ACTION VIEW Uri parse google
  • 返回承诺与在承诺内返回未定义之间的区别

    我不太确定我是否理解这两种常见场景之间的区别 假设我们有这个 user save then function val anotherPromise1 val then function val anotherPromise2 val cat
  • 从会话 0(服务)启动提升的用户进程[重复]

    这个问题在这里已经有答案了 大家早 这个问题似乎已被问过几次 但我找不到它是否真的可能 我已发布于here http social msdn microsoft com Forums windowsdesktop en US 80e4e75
  • 跨计算机共享 Eclipse 工作区?

    我需要设计或使用 5 到 10 台 PC 使用 Eclipse 但具有相同的工作空间 我该怎么做 我已经尝试过 但无法共享工作区的文件夹 请帮忙 实际上 你想实现什么目标 因为工作区应该是特定于用户的 它包含诸如设置 视角如何设置 哪个视图
  • 将字符串数组添加到组合框

    我有一个组合框 我想加载一个从方法返回的字符串数组 我目前只是用 for 循环加载它 但我认为应该可以将字符串数组直接分配给组合框 我只是想改进我的代码 我已经做了一些搜索 并且看到了使用数据范围或数据源的答案 但这些似乎都不起作用 我也尝
  • 如何在 Django-admin 中呈现自定义嵌套复选框树视图?

    我有一个bugs映射到的模型categories 类别可以拥有其他类别 class Bug models Model categories models ManyToManyField Category name models CharFi
  • 如何将外部 JAR 包含在我自己的项目 JAR 中

    我有一个 Java 应用程序 创建了一个 JAR 文件并部署了它 该应用程序使用外部 JAR 例如 Log4J JAR 创建 JAR 文件时 如何将所有外部依赖 JAR 包含到我的存档中 为了让我的应用程序正常工作 我必须将 Log4J J
  • Mysql UUID_SHORT() 与 UUID() 相当吗

    如果您愿意的话 请快速提出问题或意见 我需要为数据库表生成一些 UUID 自动递增密钥不会减少它 因为我还需要密钥在数据库和系统中保持唯一 UUID 工作正常 但其输出对于行将导出到的某些系统来说太长 UUID SHORT 做得很好 我已经
  • WCF流模式确实很慢

    我想知道为什么流模式下的 WCF 与缓冲模式相比确实很慢 基本上 我从服务器读取大量数据 数据库访问 然后通过 WCF 将大量数据传输到其他客户端 我通过比较两种不同的传输模式进行了一些测试和基准测试 我创建了 2 个端点 第一个正在使用t
  • 为什么我在 R 向量的类别中看到“整数”而不是“向量”

    为什么从数据框中切片的列的数据类型显示为 整数 而不是 向量 df lt data frame x 1 3 y c a b c x y 1 1 a 2 2 b 3 3 c c1 lt df 1 1 1 2 3 class c1 1 inte
  • Kafka Producer配置重试策略

    需要更改 Kafka Producer 配置的哪些参数 以便生产者应该 1 重试n次 2 n个间隔后 如果代理关闭 也会收到相同的消息 我需要处理与此相关的情况 https github com rsyslog rsyslog issues
  • 如何将图标添加到桌面上的应用程序快捷方式

    我希望当用户运行我的 C 应用程序时 该应用程序将创建一个桌面快捷方式来运行应用程序 我使用这个代码 private void appShortcutToDesktop string linkName string deskDir Envi
  • llvm 中 CloneFunction 的 vmap 参数传递什么?

    我正在尝试克隆另一个函数的精确副本 我在互联网上找不到任何 CloneFunction 使用的示例 事实证明 您可以只创建一个 ValueToValueMapTy 变量并在不初始化的情况下传递它
  • 如何从 bitbucket 存储库触发 jenkins 管道

    我已成功在 bitbucket 中为 Jenkins 自由式项目设置了一个 Webhook 触发器 用于测试目的 不幸的是 我的 Jenkins 项目使用的是 Pipeline 格式 我无法让 Bitbucket 触发此类项目 问题似乎是没
  • 如何修复 MLflow UI 中未显示的工件

    我使用了 MLflow 并使用下面的函数 来自 pydataberlin 记录了参数 def train alpha 0 5 l1 ratio 0 5 train a model with given parameters warnings
  • 如何通过SSDT的SQLPackage.exe将DACPAC文件发布到SQL Server数据库项目?

    我正在使用 SSDT for Visual Studio 2012here http msdn microsoft com en us jj650015并使用其命令行工具SQLPackage exe发布 dacpac 文件 我想将其发布到S
  • 使用 libjvm.so 时出现 Sigsegv Java 致命错误

    我正在做重启测试Sles12sp2 using STAF v3 4 24一段时间后我收到此错误 A fatal error has been detected by the Java Runtime Environment SIGSEGV
  • 多元化服务将状态更改为状态

    我们有一个 T4 模板 使用System Data Entity Design PluralizationServices处理某些模型生成的表名称 当我们运行一个表时Status在名称中 例如CompanyStatus the Singul
  • 如何在 Nrwl Nx 中集成 firebase

    我真的很想将 firebase 以及 firebase cli 集成到 Nx 中的应用程序中 但不知道如何实现 我使用 firebase 函数 托管 cli tools 等 理想情况下 我希望能够使用 firebase cli 部署用于托管
  • 滚动查看器无法在网格上工作

    您好 我正在 Windows 10 中学习 UWP 我需要滚动网格 他们有两段代码很相似 我的本意是在grid2中滚动 第一段代码