uwp - UWP:如果缩放因子大于 1,SCrollViewer.ChangeView 不会滚动
问题描述
我在适用于 Windows 10 的 UWP 应用中添加了一个 ScrollViewer。
我想将它用于缩放和平移。
这是我的 XAML:
<Page
x:Class="LiquidTextUWP.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:lt="using:LiquidTextUWP.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden"
ZoomMode="Enabled" Background="DarkSeaGreen" Name="ScrollArea"
Width="10000" Height="10000">
<Grid Background="LightGray" Name="Workspace">
<!-- here I put all my other controls -->
</Grid>
</ScrollViewer>
</Page>
对于平移,我为 PointerMoved 事件添加了一个小事件处理程序,如下所示:
private double previousX = 0;
public void OnPointerMoved(object sender, PointerRoutedEventArgs e)
{
if (!(sender is ScrollViewer scrollViewer))
return;
PointerPoint pp = e.GetCurrentPoint(null);
double deltaX = pp.Position.X - previousX;
previousDeltaX = pp.Position.X
bool res = scrollViewer.ChangeView(scrollViewer.HorizontalOffset - deltaX, null, null);
e.Handled = true;
}
res = true
当scrollViewer.ZoomFactor > 1
. _
相反scrollViewer.ZoomFactor < 1
,它什么也不做(和res = false
)。
编辑:我还注意到,当 时scrollViewer.ZoomFactor < 1
,属性ScrollableWidth
和ScrollableHeight
变为 0,而当 时scrollViewer.ZoomFactor > 1
,属性ScrollableWidth
和ScrollableHeight
为正。
当缩放因子小于 1 时,如何使 ScrollViewer 也为 ChangeView 返回 true?
解决方案
我认为,您必须将其设置为ScrollViewer.ZoomMode
。Enabled
最好的祝福
推荐阅读
- css - 如何通过css在底部的正方形中实现心跳的剪切?
- angular - Angular Observables - 相关端点
- python - 在数据框中调用 key 返回 keyerror
- laravel - Guzzle post give 403 - 将捆绑包标记为不支持多用途,而邮递员工作
- python - 从图像中提取车辆编号显示图像错误
- r - lme4:使用不在模型中的样本数据引导置信区间
- python - 如何将多列分组在一行中
- excel - Excel - 创建具有唯一条目且没有 0 条目的下拉列表
- java - 如何使用扫描仪将字符串值存储在数组中
- sql - 将连接表的值传递给函数参数