【问题标题】:Nested scrollviewer within a gridviewitemgridviewitem 中的嵌套滚动查看器
【发布时间】:2012-10-22 14:41:39
【问题描述】:

我在 WinRT 中有一个场景,我有一个标准的网格视图,它以水平方式显示内容 - 通常的 WinRT 滚动查看器在此处用于显示屏幕右侧的内容,因此我们可以“向左滑动”根据许多 WinRT 应用程序。

我在 XAML 中的 gridviewitems 数据模板如下:

            <DataTemplate>
                <Grid Background="White" Margin="0,0,1,1">
                    <ScrollViewer Grid.Column="3" Width="200">
                        <ListView Width="600" Height="170" Margin="0" Padding="10" ItemsSource="{Binding Path=ProductListItems}">
                            <ListView.ItemTemplate>
                                <DataTemplate>
                                    <Image Source="{Binding Path=LargeImage}" Width="200" Height="150" Stretch="UniformToFill"/>
                                </DataTemplate>
                            </ListView.ItemTemplate>
                        </ListView>
                    </ScrollViewer>
                </Grid>
            </DataTemplate>

我希望您可以从源代码中看到,模板项正在尝试显示存储在列表查看器中的图像,该图像包裹在滚动查看器中(随时显示大​​约 3 个),任何溢出的图像都可以在滚动查看器中滑动。

问题在于主父 gridview 窃取了所有输入,并且任何滑动(即使放置在模板化的 listview 滚动查看器中)都没有注册。

任何人知道如何覆盖此默认行为并在我的控件中进行两种滚动?

谢谢,

【问题讨论】:

    标签: xaml listview gridview windows-runtime controltemplate


    【解决方案1】:

    我认为 ScrollViewer 的 IsHorizontalScrollChainingEnabled 属性可能会帮助你做你想做的事,但就是说 - 你永远不应该做你想做的事,因为这是一个非常糟糕的设计。永远不要将 GridViews 或 ListViews 放在 ScrollViewer 中,也不要将它们中的任何一个嵌套在一起。如果您想提供一种方法来查看比 GridView 更多的内容 - 您应该允许导航到允许您查看它的另一个页面。在您的情况下 - 您试图将 ListView 嵌套在 GridView 内的 ScrollViewer 内,这基本上意味着您在视觉树中嵌套了 3 个 ScrollViewers,这是双重错误。

    【讨论】:

    • 感谢菲利普的回复。该设计是一个滚动的图像“窗口”——其中显示了 3 个图像,但列表中可能有 20 个,因此列表视图是存在于父网格视图中的项目。以 WinRT 中的翻转视图控件为例——它通常可以在列表控件中使用,除了它只显示 1 个图像之外非常相似。我认为您的规则可能有例外!无论如何,我的问题是由破坏数据模板样式的设计师引起的,但由于 IsHorizo​​ntalScrollChainingEnabled 是正确的行为,我会接受您的回答。
    • 好吧,我不是设计师,这些不是我的规则。我真的不认为这些是规则——更像是指导方针,所以这是你的脚——做对你有用的事。 :)
    猜你喜欢
    • 2013-08-16
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多