我已经写了附加属性的能够显示HubSection
的索引绑定到我的视图模型,这样我可以在我的代码中改变它。动画效果枢纽的滚动
我使用Hub
的ScrollTo(section)
方法,但它并没有动画滚动,所以我决定用Hub
内ScrollViewer
与ChangeView
方法。
发生什么事是,有4 HubSection
,它只是在悬挂前滚动到第二个。
的viewer.HorizontalOffset
停留固定在360
(这是HubSection
的ActualWidth
),而且也没有办法去改变它!
下面是我使用动画滚动代码:
async private static Task ScrollHubToSection(Hub hub, HubSection section, int index)
{
var dispatcher = hub.Dispatcher;
var viewer = hub.GetDescendantsOfType<ScrollViewer>().First();
var offset = index*section.ActualWidth;
await dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => viewer.ChangeView(offset, null, null, false));
}
(GetDescendantsOfType
是WinRTXamlToolkit.Controls.Extensions
)
什么我想到的是,调用
ScrollHubSection(myHub, section1, 1)
应将viewer
滚动到360
的HorizontalOffset
,而
ScrollHubSection(myHub, section2, 2)
(与offset
变得正确720
)仍有HorizontalOffset
到360
这是相当nonsens。
如果我手动插入做
viewer.ChangeView(1000, null, null, false));
它去的1000
的HorizontalOffset
偏移,但如果我不
viewer.ChangeView(offset, null, null, false));
时offset
是1000
这是行不通的。
这真的让我生气,因为我浪费了整个下午试图解决它没有成功。
你能帮我吗?