Xaml 为中心的滚动设置动画
我已经编写了一个附加属性,以便能够将显示的HubSection的索引绑定到我的ViewModel,以便在代码中对其进行更改 我使用的是中心的ScrollTosection方法,但它没有设置滚动动画,所以我决定在中心内使用ScrollViewer和ChangeView方法 发生的情况是,有4个HubSection,它只是在挂起之前滚动到第二个HubSection viewer.horizontalpoffset保持固定在360,这是轮毂部分的实际宽度,无法更改 下面是我用来制作滚动动画的代码:Xaml 为中心的滚动设置动画,xaml,windows-phone-8.1,win-universal-app,Xaml,Windows Phone 8.1,Win Universal App,我已经编写了一个附加属性,以便能够将显示的HubSection的索引绑定到我的ViewModel,以便在代码中对其进行更改 我使用的是中心的ScrollTosection方法,但它没有设置滚动动画,所以我决定在中心内使用ScrollViewer和ChangeView方法 发生的情况是,有4个HubSection,它只是在挂起之前滚动到第二个HubSection viewer.horizontalpoffset保持固定在360,这是轮毂部分的实际宽度,无法更改 下面是我用来制作滚动动画的代码: a
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));
}
应将查看器滚动至360的水平偏移,而
当偏移量正确时,720仍将水平偏移量保留为360,这是完全不存在的
如果我通过执行以下操作手动插入偏移量
viewer.ChangeView(1000, null, null, false));
它的水平偏移量为1000,但如果我这样做
viewer.ChangeView(offset, null, null, false));
当偏移量为1000时,它不起作用
这真让我抓狂,因为我浪费了整个下午试图修复它,但没有成功
你能帮我吗?你可以这样做
async private static Task ScrollHubToSection(Hub hub, HubSection section, int index)
{
var dispatcher = hub.Dispatcher;
var viewer = hub.GetDescendantsOfType<ScrollViewer>().First();
double offset = 0;
for (int i = 0; i < index; i++)
{
offset += hub.Sections[i].ActualWidth;
}
await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => viewer.ChangeView(offset, null, null, false));
}
viewer.ChangeView(offset, null, null, false));
async private static Task ScrollHubToSection(Hub hub, HubSection section, int index)
{
var dispatcher = hub.Dispatcher;
var viewer = hub.GetDescendantsOfType<ScrollViewer>().First();
double offset = 0;
for (int i = 0; i < index; i++)
{
offset += hub.Sections[i].ActualWidth;
}
await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => viewer.ChangeView(offset, null, null, false));
}