带有XAML / C#标题的GridView

时间:2015-09-14 18:40:56

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

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

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

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

有什么想法吗?我已经尝试使用SplitPane控件以及第一列(该列是ListView),但我仍然遇到同时滚动的相同问题。

1 个答案:

答案 0 :(得分: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);
    }

你可以在ScrollViewers中放置你想要的任何东西,这些线条只是为了让它显而易见的是与什么一起滚动。