Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

自動で切り替わるFlipViewの作り方

$
0
0

こんなBehaviorを作ってぽとっとすればOK

publicclass FlipViewRollingBehavior : Behavior<FlipView>
{
    private IDisposable disposable;

    publicstaticreadonly DependencyProperty IntervalProperty =
        DependencyProperty.Register(
            "Interval", 
            typeof(int), 
            typeof(FlipViewRollingBehavior), 
            new PropertyMetadata(15));

    publicint Interval
    {
        get { return (int)GetValue(IntervalProperty); }
        set { SetValue(IntervalProperty, value); }
    }

    protectedoverridevoid 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;
                });
            });
    }

    protectedoverridevoid OnDetaching()
    {
        disposable.Dispose();
        disposable = null;
    }
}

ちなみに、WinRT用のBehaviorの基本クラスはReactivePropertyにこっそり入ってるので、それを参照に追加してから作ってください。ReactivePropertyに依存したくない場合は基本クラスをDependencyObjectとIBehaviorにしてAssosiatedObjectを適当にFlipViewにキャストしてしまえばOKです。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>