Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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# 将ScrollViewer操纵模式设置为control时出现延迟_C#_Visual Studio 2012_Mvvm_Windows Phone 8_Scrollviewer - Fatal编程技术网

C# 将ScrollViewer操纵模式设置为control时出现延迟

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在地图上显示

我使用的是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否,但当我选择一台设备时,这将如何帮助移动该设备?