页面加载时自动滚动查看器 [英] scrollviewer automatically when the page load

查看:119
本文介绍了页面加载时自动滚动查看器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆