Windows runtime ScrollViewer ChangeView-AccessViolationException千分之一

Windows runtime ScrollViewer ChangeView-AccessViolationException千分之一,windows-runtime,Windows Runtime,我有FlipView(它是用Mode=“Standard”)和ScrollViewer、Image(在ScrollViewer内部作为数据模板)虚拟化的。我使用以下代码在图像上设置ImageOpened事件处理程序: private void Image\u图像已打开(对象发送方,路由目标) { var image=发送方作为映像; 双倍宽度=image.ActualWidth; 双倍高度=图像。实际高度; var sv=image.Parent作为ScrollViewer; 如果(sv!=nu

我有FlipView(它是用
Mode=“Standard”
)和ScrollViewer、Image(在ScrollViewer内部作为数据模板)虚拟化的。我使用以下代码在图像上设置
ImageOpened
事件处理程序:

private void Image\u图像已打开(对象发送方,路由目标)
{
var image=发送方作为映像;
双倍宽度=image.ActualWidth;
双倍高度=图像。实际高度;
var sv=image.Parent作为ScrollViewer;
如果(sv!=null&&width!=0&&height!=0)
{
var properZoom=ZoomUtilities.CalculateZoomFactor(宽度、高度);
sv.MinZoomFactor=0.3f;
sv.ChangeView(null、null、properZoom);
sv.MinZoomFactor=properZoom;
}
}
properZoom
始终是正确的值。当我使用此FlipView应用程序更改项目(刷卡)或加载页面时,有一千次中的一次在断点位于
sv时崩溃。ChangeView(..)
AccessViolationException
异常被抛出。有人知道这种行为的原因吗?当我可以调用
ChangeView
方法时,是否有任何限制

编辑:
忘了提及-ScrollViewer上还有一个
双击的事件处理程序,它也调用
ChangeView
我使用
.ChangeView(..)
遇到了相同的AccessViolationException。我注意到当我想要操纵的ScrollViewer具有焦点时抛出了异常。例如,当用户拖动列表或用鼠标控制滚动条时

禁用动画解决了我的问题。如果要保留动画,则应在更改视图之前寻找一种方法来移除控件上的焦点。我猜动画ChangeView试图更改由于用户输入而被锁定的属性

希望这有帮助。

我也有同样的问题。 我的解决方案:调用反转,从图像对象到父对象得到错误。 调用普通路径:objectscroolviewer.changeview,无错误。 然后:

改为

var sv = ScrollViewerObject; 

从外部(而不是通过父对象的内部引用)将对象获取为变量,并忽略发送方参数。

对于读取此函数的任何其他人,该函数采用一个参数来禁用/启用动画。我相信这就是答案第二段所讨论的,但我不是100%确定。
var sv = ScrollViewerObject;