【问题标题】:A GridView with headers in XAML/C#XAML/C# 中带有标题的 GridView
【发布时间】:2015-09-14 18:40:56
【问题描述】:

我正在尝试为 Windows 通用应用创建网格视图。

理想情况下,我希望有一个可以水平和垂直滚动的网格类型视图,但在滚动时,无论用户在数据中的何处移动,第一行和第一列都永久可见(例如:冻结Excel 中的窗格)。

我不确定是否应该继续使用 Grid、切换到 GridView 或使用多个 ListView 来模拟网格。通用 Windows 示例似乎具有我正在寻找的标题,该标题在 Grid/ListView 滚动(一个简单组)时不会消失,但它们似乎没有的能力当一个视图滚动时,所有视图都会滚动。

有什么想法吗?我也尝试将 SplitPane 控件用于第一列(该列是 ListView),但我仍然遇到同样的同时滚动问题。

【问题讨论】:

    标签: c# xaml windows-runtime winrt-xaml win-universal-app


    【解决方案1】:

    这是你想要的吗?

    XAML:

    <Grid Width="500" Height="500">
        <Grid.RowDefinitions>
            <RowDefinition Height="100" />
            <RowDefinition Height="400" />
        </Grid.RowDefinitions>
    
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="400" />
        </Grid.ColumnDefinitions>
    
        <ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="top" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
            <Grid Background="Green" Width="1000">
                <Line X1="0" X2="1000" Y1="0" Y2="100" Stroke="Black" StrokeThickness="5"/>
            </Grid>
        </ScrollViewer>
    
        <ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="left" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
            <Grid Background="Red" Height="1000">
                <Line X1="0" X2="100" Y1="0" Y2="1000" Stroke="Black" StrokeThickness="5"/>
            </Grid>
        </ScrollViewer>
    
        <ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="middle" ViewChanged="middle_ViewChanged" Background="Blue" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible">
            <Grid Background="Blue" Height="1000" Width="1000">
                <Line X1="0" X2="1000" Y1="0" Y2="1000" Stroke="Black" StrokeThickness="5"/>
            </Grid>
        </ScrollViewer>
    </Grid>
    

    后面的代码:

        private void middle_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {
            top.ChangeView(middle.HorizontalOffset, null, null, true);
            left.ChangeView(null, middle.VerticalOffset, null, true);
        }
    

    您可以在这些 ScrollViewer 中放置您想要的任何内容,这些行只是为了让您清楚地看到滚动与什么同步。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 2019-09-25
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多