滚动后启动事件

时间:2013-12-29 21:08:25

标签: xaml windows-phone-7 windows-phone scrollviewer

我是Windows Phone应用程序开发的新手,我使用以下xaml代码创建了一个滚动菜单:

    <ScrollViewer  HorizontalAlignment="Left" Margin="18,0,0,0" Name="scrollViewer1" VerticalAlignment="Top" Width="450" HorizontalScrollBarVisibility="Auto" Grid.Row="1">
        <StackPanel Height="Auto" Name="stackPanel1" Width="Auto">
            <Button Height="620" FontSize="120" Name="gotoGmail" Width="Auto">Gmail</Button>
            <Button Height="620" FontSize="120" Name="gotoYahoo" Width="Auto">Yahoo</Button>
        </StackPanel>
    </ScrollViewer>

我想知道一旦用户将菜单从一个按钮滚动到另一个按钮,是否可以启动一个事件。如果有可能的话,如果你能解释一下,我将不胜感激。如果不是,我想知道如何使用不同的工具而不是ScrollViewer来做到这一点。提前谢谢!

1 个答案:

答案 0 :(得分:0)

ScrollViewer上没有“Scrolled”事件,但您可以做的是将属性双向绑定到VerticalOffset。这使您可以在滚动更改时从视图/视图模型中触发事件/命令。

这样的事情:

<ScrollViewer VerticalOffset="{Binding VerticalOffset,Mode=TwoWay}" ...

然后在数据上下文中:

public double VerticalOffset
{
    get { return _verticalOffset; }
    set
    {
        _verticalOffset = value;
        // call "on scroll changed" actions here
    }
}
private double _verticalOffset = 0;

  

我怎么能用不同的工具而不是ScrollViewer

来做

您当然可以使用其他方法制作滚动菜单。我敢打赌,使用WinRT过渡/动画的东西,你可以想到一些漂亮的方法,但我不熟悉这些。以下是其他一些(不确定哪种方式对您的方案最好/最简单):

  • 使用Canvas可能是一种快速而肮脏的方法(仅设置启动Canvas.LeftCanvas.Top动画的按钮)。
  • 如果您想要创建可重复使用的组件,那么将ItemsControl与自定义ControlTemplate一起扩展将是一个很好的方法。
  • 我喜欢扩展Panel,但您必须使用DispatcherTimer手动制作动画,并且必须使用MeasureArrange自行布置按钮。