【问题标题】:How to scroll out of screen form in WPF C#如何在 WPF C# 中滚动出屏幕窗体
【发布时间】:2020-01-06 05:20:13
【问题描述】:

我需要让 ListView 离开屏幕并能够滚动到“屏幕外”的第一个元素。

当我将带有边距的 ListView 移出屏幕时,我无法到达第一个位置。

我有这个:

<ListView Grid.IsSharedSizeScope="True">        
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Focusable" Value="false"/>
                    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown"/>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="50" SharedSizeGroup="First" />
                            <ColumnDefinition Width="150" SharedSizeGroup="Second"/>
                            <ColumnDefinition Width="200" SharedSizeGroup="Third"/>
                            <ColumnDefinition Width="50" SharedSizeGroup="Fourth"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text ="{Binding some1}" />
                        <TextBlock Grid.Column="1" Text="{Binding some2}" />
                        <TextBlock Grid.Column="2" Text="{Binding some3}" />
                        <Button Grid.Column="3" Click="Cancel">X</Button>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

image1

image2

我需要滚动到第一个元素,如图 2 所示。 有人知道怎么做吗?

谢谢你的建议。

【问题讨论】:

    标签: c# wpf listview


    【解决方案1】:

    尝试用ScrollViewer 包裹ListView,然后将VerticalScrollBarVisibility 设置为Visible

    <ScrollViewer VerticalScrollBarVisibility="Visible">
        <!--The list-->
    </ScrollViewer>
    

    【讨论】:

    • 它不工作,我可以看到滚动条,但我不能随它移动。
    • @Stepan 尝试用 Grid 包裹现有的 ScrollViewer,可能问题是因为您没有设置高度并且滚动条找不到位置
    • 我将 Scrollviewer 包裹到网格中并尝试​​设置确切的高度,但仍然无法正常工作。
    • @Stepan 抱歉,我没有仔细阅读您的问题,因此您将列表的边距向右移动,让我重新评估和编辑。
    • @Stepan 好的,所以我认为您想要完成的是查看最新的元素,并且您可以滚动回旧元素,因为您这样做实际上有点效率不高。直接的解决方案可能是将列表中的每个元素从最后一个渲染到第一个,然后您可以向下滚动到第一个。但是,如果您真的想按照您所描述的那样做,您可以查看此链接stackoverflow.com/questions/8370209/…,其中涉及一些自动滚动属性
    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多