こんなBehaviorを作ってぽとっとすればOK
public class FlipViewRollingBehavior : Behavior<FlipView> { private IDisposable disposable; public static readonly DependencyProperty IntervalProperty = DependencyProperty.Register( "Interval", typeof(int), typeof(FlipViewRollingBehavior), new PropertyMetadata(15)); public int Interval { get { return (int)GetValue(IntervalProperty); } set { SetValue(IntervalProperty, value); } } protected override void OnAttached() { disposable = Observable.Interval(TimeSpan.FromSeconds(this.Interval)) .Subscribe(async _ => { await this.AssociatedObject.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { var index = this.AssociatedObject.SelectedIndex; index++; if (index >= ((IEnumerable<object>)this.AssociatedObject.ItemsSource).Count()) { index = 0; } this.AssociatedObject.SelectedIndex = index; }); }); } protected override void OnDetaching() { disposable.Dispose(); disposable = null; } }
ちなみに、WinRT用のBehaviorの基本クラスはReactivePropertyにこっそり入ってるので、それを参照に追加してから作ってください。ReactivePropertyに依存したくない場合は基本クラスをDependencyObjectとIBehaviorにしてAssosiatedObjectを適当にFlipViewにキャストしてしまえばOKです。