gridviewitem中的嵌套scrollviewer

时间:2012-10-22 14:41:39

标签: xaml listview gridview windows-runtime controltemplate

我在WinRT中有一个场景,我有一个标准的gridview以水平的方式显示内容 - 通常的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>

正如我希望你可以从源头看到的那样,模板项目试图显示存储在listviewer中的图像,这些图像包含在一个滚动查看器中(随时显示约3个),任何溢出的图像都可以在滚动查看器中移动。

问题是主要的父网格视图窃取了所有输入,并且没有注册任何滑动(即使放在模板化的listview scrollviewer中)。

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

谢谢,

1 个答案:

答案 0 :(得分:1)

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