如何获得垂直偏移从底部到顶部的滚动查看器在uwp?



我想要scrollviewer从底部到顶部的垂直偏移量,而不是在uwp中从顶部到底部,因为它只显示从顶部到底部,因为我从顶部增加应用程序的高度,它将不起作用,但当我减少应用程序的高度时,它将起作用...............请帮帮我。

这是我的代码

double getvalue = scrollviewer.verticaloffset;
textblock.Text = getvalue.ToString();

获取值但是当我增加app的高度时它不会工作但是当我降低app的高度时它会显示一些值

当滚动条顶部它不会给值 ............................请帮帮我。

伙计们,这里有一些截图

图像1

如图1所示,app处于正常状态

图2

从图2可以看出,当应用程序的窗口高度很小时

图片3

正如你在图3中看到的,当我向上滚动时,它显示了Button。

图片4

如图4所示,当我增加App的高度时,它并没有消失。

5图像

如图5所示,当我降低App的高度时,它就消失了。

所以,朋友们,你能帮我使这个功能成为可能吗

根据图像和您的描述,我认为您的目的是创建一个按钮,用于让ScrollViewer滚动到顶部。问题是如何让按钮显示当ScrollViewer’s内容不在底部时,无论你向上或向下滚动条或调整窗口大小,当ScrollViewer’s内容不在底部时隐藏按钮,无论你向上或向下滚动条或调整窗口大小。

你可以使用VerticalOffset属性表示内容垂直滚动的距离,ViewportHeight属性表示可见内容的垂直大小,ExtentHeight属性表示ScrollViewer中所有可滚动内容的垂直大小,以确定ScrollViewer的内容是否到达底部。

请检查以下代码作为示例:

//MainPage.xaml
<Grid SizeChanged="Grid_SizeChanged">
<ScrollViewer x:Name="scrollViewer" VerticalScrollBarVisibility="Visible" VerticalScrollMode="Enabled"
ViewChanged="scrollViewer_ViewChanged">
<StackPanel x:Name="stackPanel" Background="LightGray">
<TextBlock Text="0" Margin="20"/>
<TextBlock Text="1" Margin="20"/>
<TextBlock Text="2" Margin="20"/>
<TextBlock Text="3" Margin="20"/>
<TextBlock Text="4" Margin="20"/>
<TextBlock Text="5" Margin="20"/>
<TextBlock Text="6" Margin="20"/>
<TextBlock Text="7" Margin="20"/>
<TextBlock Text="8" Margin="20"/>
<TextBlock Text="9" Margin="20"/>
<TextBlock Text="10" Margin="20"/>
<TextBlock Text="11" Margin="20"/>
<TextBlock Text="12" Margin="20"/>
</StackPanel>
</ScrollViewer>
<Button x:Name="BackButton" Content="top" Click="BackButton_Click" HorizontalAlignment="Center" VerticalAlignment="Bottom"/>
</Grid>
//MainPage.xaml.cs
private void BackButton_Click(object sender, RoutedEventArgs e)
{
//The code is used to scroll to the top
scrollViewer.ChangeView(null, 0, null);
//the code is used to scroll to the bottom
//scrollViewer.ChangeView(null, scrollViewer.ExtentHeight-scrollViewer.ViewportHeight, null);
}
private void scrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
var verticalOffset = scrollViewer.VerticalOffset;
var extentHeight = scrollViewer.ExtentHeight;
var viewportHeight = scrollViewer.ViewportHeight;
if (viewportHeight + verticalOffset == extentHeight)
{
BackButton.Visibility = Visibility.Collapsed;
}
else
{
BackButton.Visibility = Visibility.Visible;
}
}
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
var verticalOffset = scrollViewer.VerticalOffset;
var extentHeight = scrollViewer.ExtentHeight;
var viewportHeight = scrollViewer.ViewportHeight;
if (viewportHeight + verticalOffset == extentHeight)
{
BackButton.Visibility = Visibility.Collapsed;
}
else
{
BackButton.Visibility = Visibility.Visible;
}
}

如果您还有什么问题,请随时与我联系。

最新更新