页面加载时自动滚动查看器 [英] scrollviewer automatically when the page load
本文介绍了页面加载时自动滚动查看器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用c#和xaml在窗口8:上工作
我在滚动查看器中有大尺寸图像.我希望页面加载的滚动查看器自动移动到结束位置,以便在滚动查看器移动时可以看到整个图像.如果这可以通过情节提要动画实现,那就更好了.请帮忙.
I am working on window 8:, using c# and xaml
I have large size image inside a scroll viewer. I want when the page loaded scroll viewer move to end automatically so I can see the whole image when scroll viewer move. if this possible through storyboard animation then it is more better. please help.
推荐答案
我已纠正(从我之前删除的解决方案中).
您不能设置默认滚动查看器的动画,因为偏移量不是依赖项属性.您可以创建一个自定义控件并创建新的依赖项属性,然后将其用于滚动查看器.这是示例代码:
AniScrollViewer:
I stand corrected (from my previous solution which I deleted).
You can''t animate the default scroll viewer because the offsets are not dependency properties. You can create a custom control and make new dependency properties, then use that for the scroll viewer. Here is the sample code:
AniScrollViewer:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
namespace AniScrollViewerExample
{
public class AniScrollViewer : ScrollViewer
{
//Register a DependencyProperty which has a onChange callback
public static DependencyProperty CurrentVerticalOffsetProperty = DependencyProperty.Register("CurrentVerticalOffset", typeof(double), typeof(AniScrollViewer), new PropertyMetadata(new PropertyChangedCallback(OnVerticalChanged)));
public static DependencyProperty CurrentHorizontalOffsetProperty = DependencyProperty.Register("CurrentHorizontalOffsetOffset", typeof(double), typeof(AniScrollViewer), new PropertyMetadata(new PropertyChangedCallback(OnHorizontalChanged)));
//When the DependencyProperty is changed change the vertical offset, thus 'animating' the scrollViewer
private static void OnVerticalChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
AniScrollViewer viewer = d as AniScrollViewer;
viewer.ScrollToVerticalOffset((double)e.NewValue);
}
//When the DependencyProperty is changed change the vertical offset, thus 'animating' the scrollViewer
private static void OnHorizontalChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
AniScrollViewer viewer = d as AniScrollViewer;
viewer.ScrollToHorizontalOffset((double)e.NewValue);
}
public double CurrentHorizontalOffset
{
get { return (double)this.GetValue(CurrentHorizontalOffsetProperty); }
set { this.SetValue(CurrentHorizontalOffsetProperty, value); }
}
public double CurrentVerticalOffset
{
get { return (double)this.GetValue(CurrentVerticalOffsetProperty); }
set { this.SetValue(CurrentVerticalOffsetProperty, value); }
}
}
}
然后在WPF中制作动画:
Then to animate in WPF:
<aniscrollviewer horizontalscrollbarvisibility="Auto">
<image source="C:\MyBigImage.png" stretch="None" />
<scrollviewer.triggers>
<eventtrigger routedevent="Image.Loaded">
<eventtrigger.actions>
<beginstoryboard>
<storyboard>
<doubleanimation storyboard.targetproperty="CurrentHorizontalOffset" to="120" duration="0:0:2"></doubleanimation>
<doubleanimation storyboard.targetproperty="CurrentVerticalOffset" to="120" duration="0:0:2"></doubleanimation>
</storyboard>
</beginstoryboard>
</eventtrigger.actions>
</eventtrigger>
</scrollviewer.triggers>
</aniscrollviewer>
代码示例取自 http://aniscrollviewer.codeplex.com/ [
Code example taken from http://aniscrollviewer.codeplex.com/[^].
这篇关于页面加载时自动滚动查看器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文