Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XAML/C中带有标题的GridView#_C#_Xaml_Windows Runtime_Winrt Xaml_Win Universal App - Fatal编程技术网

C# XAML/C中带有标题的GridView#

C# XAML/C中带有标题的GridView#,c#,xaml,windows-runtime,winrt-xaml,win-universal-app,C#,Xaml,Windows Runtime,Winrt Xaml,Win Universal App,我正在尝试为Windows通用应用程序创建网格视图 理想情况下,我希望有一个网格类型的视图,可以水平和垂直滚动,但在滚动时,无论用户在数据中移动到哪里,第一行和第一列都永久可见(例如:Excel中的冻结窗格) 我不确定是否应该继续使用网格、切换到GridView或使用多个ListView来模拟网格。Universal Windows示例似乎有我想要的一个标题,在对Grid/ListView进行滚动(一个简单的组)时,该标题不会消失,但它们似乎没有这样的功能,即当一个视图被滚动时,所有视图都会滚动

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

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

我不确定是否应该继续使用网格、切换到GridView或使用多个ListView来模拟网格。Universal Windows示例似乎有我想要的一个标题,在对Grid/ListView进行滚动(一个简单的组)时,该标题不会消失,但它们似乎没有这样的功能,即当一个视图被滚动时,所有视图都会滚动

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

这就是您想要的吗

XAML:

你可以在这些ScrollViewer中放入你想要的任何内容,这些行的出现只是为了让人们清楚地看到什么与什么同步滚动

<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);
    }