public VirtualListView()
        {
            InitializeComponent();

            ViewModel = new VirtualListVewModel(SynchronizationContext.Current, new DataService());

            var listMaxItems = 30;
            listBox1.DataSource = ViewModel.Items;

            ViewModel.Count
            .Sample(TimeSpan.FromMilliseconds(100))                               // every tenth of a second
            .DistinctUntilChanged()                                               // if count has changed
            .Select(x=> Math.Max(0, x- listMaxItems))
            .ObserveOn(SynchronizationContext.Current)
            .Subscribe(x => {
                            vScrollBar1.Maximum = x;                              // update the scrollbar
                            //  vScrollBar1.Value = vScrollBar1.Maximum;            // auto-scroll the list
            });                                                   

            Observable.FromEventPattern<EventHandler, EventArgs>(h => vScrollBar1.ValueChanged += h,
                                                                h => vScrollBar1.ValueChanged -= h)
            .Select(_ => vScrollBar1.Value)
            .StartWith(0)
            .Subscribe(x => ViewModel.Virtualise(x, listMaxItems));

        }
Example #2
0
        public VirtualListView()
        {
            InitializeComponent();

            ViewModel = new VirtualListVewModel(SynchronizationContext.Current, new DataService());

            var listMaxItems = 30;

            listBox1.DataSource = ViewModel.Items;

            ViewModel.Count
            .Sample(TimeSpan.FromMilliseconds(100))                               // every tenth of a second
            .DistinctUntilChanged()                                               // if count has changed
            .Select(x => Math.Max(0, x - listMaxItems))
            .ObserveOn(SynchronizationContext.Current)
            .Subscribe(x => {
                vScrollBar1.Maximum = x;                                          // update the scrollbar
                //  vScrollBar1.Value = vScrollBar1.Maximum;            // auto-scroll the list
            });

            Observable.FromEventPattern <EventHandler, EventArgs>(h => vScrollBar1.ValueChanged += h,
                                                                  h => vScrollBar1.ValueChanged -= h)
            .Select(_ => vScrollBar1.Value)
            .StartWith(0)
            .Subscribe(x => ViewModel.Virtualise(x, listMaxItems));
        }