C# 将ScrollViewer操纵模式设置为control时出现延迟
我使用的是MVVM模型,其中我有一个ScrollViewer,当我希望在ScrollViewer中移动一个项目时,我将其操纵属性设置为控制。但是,当我将ScrollViewer操纵属性设置为control时,每当我移动项目时,它都会滞后。有没有办法避免这种延迟,或者在ScrollViewer处于活动状态时移动我的对象 移动项目时激活scrollViewer的问题是,我只能在项目内翻译项目,一旦我离开项目,scrollViewer就会接管我不希望发生的事情 我的scrollViewer在地图上显示:C# 将ScrollViewer操纵模式设置为control时出现延迟,c#,visual-studio-2012,mvvm,windows-phone-8,scrollviewer,C#,Visual Studio 2012,Mvvm,Windows Phone 8,Scrollviewer,我使用的是MVVM模型,其中我有一个ScrollViewer,当我希望在ScrollViewer中移动一个项目时,我将其操纵属性设置为控制。但是,当我将ScrollViewer操纵属性设置为control时,每当我移动项目时,它都会滞后。有没有办法避免这种延迟,或者在ScrollViewer处于活动状态时移动我的对象 移动项目时激活scrollViewer的问题是,我只能在项目内翻译项目,一旦我离开项目,scrollViewer就会接管我不希望发生的事情 我的scrollViewer在地图上显示
<ScrollViewer Width="768" Height="380" HorizontalScrollBarVisibility="Hidden" >
<Map/>
</ScrollViewer>
在这张地图中,我添加了一个单位,这是我移动的物品。我已经为该单元创建了一个ViewModel,在该ViewModel中,我通过已启动/增量/已完成的操纵来移动该单元:
ManipulationStarted(ManipulationStartedEventArgs e)
var myScrollViewer = FindParentOfType<ScrollViewer>(UnitViewModelSel) as ScrollViewer;
myScrollViewer.SetValue(ScrollViewer.ManipulationModeProperty, ManipulationMode.Control);
public void ManDelta(ManipulationDeltaEventArgs e)
{
Point fingerPosition = e.DeltaManipulation.Translation;
Unit.x = fingerPosition.X + Unit.x;
Unit.y = fingerPosition.Y + Unit.y;
}
public void ManCompleted(ManipulationCompletedEventArgs e)
{
var myScrollViewer = FindParentOfType<ScrollViewer>(UnitViewModel) as ScrollViewer;
myScrollViewer.SetValue(ScrollViewer.ManipulationModeProperty, ManipulationMode.System);
}
manipionstarted(manipionstartedeventargs e)
var myScrollViewer=FindParentOfType(UnitViewModelSel)作为ScrollViewer;
myScrollViewer.SetValue(ScrollViewer.OperationModeProperty、OperationMode.Control);
公共空间ManDelta(操纵Deltaeventargs e)
{
Point fingerPosition=e.DeltaManipulation.Translation;
单位x=手指位置x+单位x;
单位y=手指位置y+单位y;
}
public void ManCompleted(操纵完成事件参数e)
{
var myScrollViewer=FindParentOfType(UnitViewModel)作为ScrollViewer;
myScrollViewer.SetValue(ScrollViewer.OperationModeProperty,OperationMode.System);
}
但是,当我将ScrollViewer操纵属性设置为control时,每当我移动项目时,它都会滞后
,这就是为什么此属性的默认值为系统
。使用系统
,由于硬件加速,滚动非常平滑,但您对其没有控制权或控制有限。使用控件
,您可以让控件处理滚动,但会牺牲平滑度。这一切都是为了妥协。@KooKiz那个么你们如何用ScrollViewer移动一个单元呢?我不确定。您是否尝试过使用ScrollViewer.VerticalOffsetProperty
和ScrollViewer.HorizontalOffsetProperty
?@KooKiz否,但当我选择一台设备时,这将如何帮助移动该设备?