【问题标题】:UWP Offset GridView ScrollbarUWP 偏移 GridView 滚动条
【发布时间】:2019-09-24 11:38:08
【问题描述】:

我正在制作一个在标题元素后面滚动的 Gridview(它是半透明的,以显示在它后面滚动的项目)。为此,我将包含标题的 GridGridView 分层,将它们作为子级放置在同一个 Grid 中。

<Grid>
    <GridView>
        <!-- Stuff -->
    <GridView>

    <Grid Height="100">
        <!-- Title Content here -->
    </Grid>
</Grid>

这可以正常工作,但会导致 GridView 最初在标题后面显示元素。为了解决这个问题,我在GridView 中偏移了ItemsWrapGrid

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <ItemsWrapGrid Name="ItemsWrapGrid"
                       Margin="0,100,0,0"
                       Orientation="Horizontal"
                       HorizontalAlignment="Center"></ItemsWrapGrid>
    </ItemsPanelTemplate>
</GridView.ItemsPanel>

现在项目开始时好像它们在标题内容下方,并在其下方滚动。

剩下的唯一问题是GridView 的滚动条。滚动条仍然位于父 Grid 的顶部,这意味着它位于标题的后面,即使 GridView 中的项目本身从标题下方开始。当GridView(行)中有足够的项目以使滚动条足够小以至于它完全位于标题后面时,这尤其是一个问题。

有没有办法抵消类似于GridView 项目的滚动条?这是错误的方法吗?

【问题讨论】:

    标签: xaml gridview uwp scrollbar


    【解决方案1】:

    UWP 偏移 GridView 滚动条

    根据您的要求,您可以使用VisualTreeHelper 获取VerticalScrollBar 元素,然后在GridView 加载事件处理程序中设置Margin = 0,100,0,0。详细步骤请参考以下代码。

    public static DependencyObject MyFindGridViewChildByName(DependencyObject parant, string ControlName)
    {
        int count = VisualTreeHelper.GetChildrenCount(parant);
    
        for (int i = 0; i < count; i++)
        {
            var MyChild = VisualTreeHelper.GetChild(parant, i);
            if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
                return MyChild;
    
            var FindResult = MyFindGridViewChildByName(MyChild, ControlName);
            if (FindResult != null)
                return FindResult;
        }
    
        return null;
    }
    
    
    private void TestGridView_Loaded(object sender, RoutedEventArgs e)
    {
        var scrollBar = MyFindGridViewChildByName(TestGridView, "VerticalScrollBar");
    
        scrollBar.SetValue(MarginProperty, new Thickness(0, 100, 0, 0));
    
    }
    

    【讨论】:

    • 我实现了这个,它的工作原理和预期的一样。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多