示例#1
0
        public DataGrid()
        {
            InitializeComponent();

            _sortingOrders = new Dictionary <int, SortingOrder>();

            _listView.ItemSelected += (s, e) =>
            {
                if (SelectionEnabled)
                {
                    SelectedItem = _listView.SelectedItem;
                }
                else
                {
                    _listView.SelectedItem = null;
                }

                ItemSelected?.Invoke(this, e);
            };

            _listView.Refreshing += (s, e) =>
            {
                Refreshing?.Invoke(this, e);
            };
        }
示例#2
0
            public static void ForcedRefresh <T>(Refreshing <T, int> refreshing) where T : IEquatable <T>
            {
                var initialCount = refreshing.RefreshCount;

                refreshing.Refresh();
                Assert.That(refreshing, Has.Property(nameof(refreshing.RefreshCount)).EqualTo(initialCount + 1));
            }
        public DataGrid(ListViewCachingStrategy cachingStrategy)
        {
            InitializeComponent();

            _sortingOrders = new Dictionary <int, SortingOrder>();

            _listView = new ListView(cachingStrategy)
            {
                BackgroundColor     = Color.Transparent,
                ItemTemplate        = new DataGridRowTemplateSelector(),
                SeparatorVisibility = SeparatorVisibility.None,
            };

            _listView.ItemSelected += (s, e) => {
                if (SelectionEnabled)
                {
                    SelectedItem = _listView.SelectedItem;
                }
                else
                {
                    _listView.SelectedItem = null;
                }

                ItemSelected?.Invoke(this, e);
            };

            _listView.Refreshing += (s, e) => {
                Refreshing?.Invoke(this, e);
            };

            _listView.SetBinding(ListView.RowHeightProperty, new Binding("RowHeight", source: this));
            Grid.SetRow(_listView, 1);
            Children.Add(_listView);
        }
 public void Refresh()
 {
     App.Current.Dispatcher.Invoke(() =>
     {
         Refreshing?.Invoke(this, new EventArgs());
     });
 }
示例#5
0
        public void MultipleSecondsButOnlyOneInvocation()
        {
            var invoker   = new CountedFunc <string>(() => "swag: " + DateTime.Now);
            var perSecond = new Refreshing <string, DateTime>(
                invoker.Invoke,
                () => DateTime.Now,
                (prev, cur) => cur - prev >= TimeSpan.FromSeconds(1)
                );

            Assert.That(perSecond, Has.Property(nameof(perSecond.Freshness)).EqualTo(Freshness.Stale));
            Assert.That(invoker, Has.Property(nameof(invoker.InvocationCount)).EqualTo(0));
        }
示例#6
0
        void BeginRefreshing(bool isPulledRefresh)
        {
            var currentIconGeometryY       = _refreshIcon.Geometry.Y;
            var contentDistanceDiff        = _maximumDistance - currentIconGeometryY;
            var _refreshIconBeginAnimation = new Animation(v => _refreshIcon.Move(_refreshIcon.Geometry.X, currentIconGeometryY + (int)v), 0, contentDistanceDiff, Easing.Linear);

            _refreshIconBeginAnimation.Commit(this, "RefreshIconBegin", length: _animationLength);

            _refreshState          = RefreshState.Loading;
            _isRefreshing          = true;
            _refreshIcon.IsRunning = true;
            Refreshing?.Invoke(this, EventArgs.Empty);
        }
示例#7
0
        public void Teest()
        {
            ConnectionReader connectionNoW = new ConnectionReader();

            connectionNoW.Start();


            ConnectionNoW connectionNoW2 = new ConnectionNoW();

            connectionNoW2.Start();

            NumberWorkers numberWorkers = new NumberWorkers();

            numberWorkers.Number();

            ValuesFromInterval valuesFromInterval = new ValuesFromInterval();
            Refreshing         refreshing         = new Refreshing();
            LastValue          lastValue          = new LastValue();
        }
示例#8
0
 public static void Do(IHomeContentGetter getter = null)
 {
     lock (_lock)
     {
         getter = getter ?? new RemoteXamlReader();
         //开始刷新
         Refreshing?.Invoke(null, new HomeContentRefreshingEventArgs());
         //下载远端数据
         if (!getter.TryGet(out object result))
         {
             App.Current.Dispatcher.Invoke(() =>
             {
                 result = getter.Default();
             });
         }
         //刷新完成
         Refreshed?.Invoke(null, new HomeContentRefreshedEventArgs(result));
     }
 }
示例#9
0
        public void PristineUntilFirstRetrieval()
        {
            const string str        = "yolo";
            var          invoker    = new CountedFunc <string>(() => str);
            var          refreshing = new Refreshing <string, long>(
                invoker.Invoke,
                () => DateTime.Now.Ticks,
                (prev, cur) => cur - prev >= TimeSpan.TicksPerSecond
                );

            Assert.That(invoker, Has.Property(nameof(invoker.InvocationCount)).EqualTo(0));
            Assert.That(refreshing, Has.Property(nameof(refreshing.Freshness)).EqualTo(Freshness.Stale));

            10.Repeat(
                () => {
                Assert.That(refreshing.Value, Is.EqualTo(str));
                Assert.That(invoker, Has.Property(nameof(invoker.InvocationCount)).EqualTo(1));
                Assert.That(refreshing, Has.Property(nameof(refreshing.Freshness)).EqualTo(Freshness.Fresh));
            }
                );
        }
示例#10
0
        public void EverySecond()
        {
            var timeKeeper = new CountedFunc <DateTime>(() => DateTime.Now);
            var perSecond  = new Refreshing <DateTime, DateTime>(
                () => timeKeeper.Invoke(),
                () => DateTime.Now,
                (prev, current) => current >= (prev + TimeSpan.FromSeconds(1))
                );

            Assert.That(timeKeeper.InvocationCount, Is.EqualTo(0));
            Assert.That(perSecond.Freshness, Is.EqualTo(Freshness.Stale));

            Console.WriteLine(perSecond.Value);
            Assert.That(perSecond.Freshness, Is.EqualTo(Freshness.Fresh));
            Assert.That(timeKeeper.InvocationCount, Is.EqualTo(1));

            int hertz   = 10;
            int seconds = 5;

            for (int s = 0; s < seconds; s++)
            {
                for (int i = 0; i < hertz; i++)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(1f / hertz));
                    var v = perSecond.Value;
                    v = perSecond.Value;
                    v = perSecond.Value;
                    v = perSecond.Value;
                    v = perSecond.Value;

                    Assert.That(perSecond.Freshness, Is.EqualTo(Freshness.Fresh));
                }

                Console.WriteLine(perSecond.Value);
                Assert.That(timeKeeper.InvocationCount, Is.EqualTo(s + 2));
            }
        }
示例#11
0
 private void LvListView_Refreshing(object sender, EventArgs e)
 {
     Refreshing?.Invoke(this, e);
 }
示例#12
0
 void OnRefreshing(EventArgs e)
 => Refreshing?.Invoke(this, e);
 private void RaiseRefreshing()
 {
     IsRefreshing = true;
     Refreshing?.Invoke(this, EventArgs.Empty);
 }
示例#14
0
 internal static void OnRefreshing()
 {
     Refreshing?.Invoke(null, EventArgs.Empty);
 }