垂直滚动时冻结控制

发布于 2024-12-23 01:38:12 字数 54 浏览 4 评论 0原文

我在 ScrollViewer 中有一些控件。我需要其中一个控件在垂直滚动时冻结。我该怎么做?

I have some group of controls inside ScrollViewer. I need one of this controls to freeze while vertical scrolling. How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南薇 2024-12-30 01:38:12

通过对ListView的一些创造性的使用,你可以达到预期的效果。您可能还需要对 ListView 模板进行一些调整,以避免某些特定于 ListView 的行为。

    <ListView ScrollViewer.CanContentScroll="False">
        <ListView.View>
            <GridView>
                <GridViewColumn>
                    <GridViewColumn.HeaderTemplate>
                        <DataTemplate>
                            <!-- Header/Frozen content goes here -->
                            <!-- Using Border as example -->
                            <Border Width="1000" Height="40">
                                <Border.Background>
                                    <LinearGradientBrush>
                                        <GradientStop Offset="0" Color="Lime"/>
                                        <GradientStop Offset="1" Color="Black"/>
                                    </LinearGradientBrush>
                                </Border.Background>
                            </Border>
                        </DataTemplate>
                    </GridViewColumn.HeaderTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
        <ListViewItem>
            <ListViewItem.Style>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <!-- Other content goes here -->
                                <!-- Using Border as example -->
                                <Border Width="1000" Height="1000">
                                    <Border.Background>
                                        <LinearGradientBrush>
                                            <GradientStop Offset="0" Color="White"/>
                                            <GradientStop Offset="1" Color="Black"/>
                                        </LinearGradientBrush>
                                    </Border.Background>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListViewItem.Style>
        </ListViewItem>
    </ListView>

By some creative use of ListView, you can achieve the desired effect. You might also have to tweak the ListView template some to avoid certain ListView-specific behaviours.

    <ListView ScrollViewer.CanContentScroll="False">
        <ListView.View>
            <GridView>
                <GridViewColumn>
                    <GridViewColumn.HeaderTemplate>
                        <DataTemplate>
                            <!-- Header/Frozen content goes here -->
                            <!-- Using Border as example -->
                            <Border Width="1000" Height="40">
                                <Border.Background>
                                    <LinearGradientBrush>
                                        <GradientStop Offset="0" Color="Lime"/>
                                        <GradientStop Offset="1" Color="Black"/>
                                    </LinearGradientBrush>
                                </Border.Background>
                            </Border>
                        </DataTemplate>
                    </GridViewColumn.HeaderTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
        <ListViewItem>
            <ListViewItem.Style>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <!-- Other content goes here -->
                                <!-- Using Border as example -->
                                <Border Width="1000" Height="1000">
                                    <Border.Background>
                                        <LinearGradientBrush>
                                            <GradientStop Offset="0" Color="White"/>
                                            <GradientStop Offset="1" Color="Black"/>
                                        </LinearGradientBrush>
                                    </Border.Background>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListViewItem.Style>
        </ListViewItem>
    </ListView>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文