我是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
来做到这一点。提前谢谢!
答案 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.Left
和Canvas.Top
动画的按钮)。 ItemsControl
与自定义ControlTemplate
一起扩展将是一个很好的方法。 Panel
,但您必须使用DispatcherTimer
手动制作动画,并且必须使用Measure
和Arrange
自行布置按钮。