Пример #1
0
 /// <summary>
 /// 更新全部数量
 /// </summary>
 /// <param name="num"></param>
 public void UpAll(int num)
 {
     if (lb_num.InvokeRequired)
     {
         UpLabel up = new UpLabel(UpAll);
         this.Invoke(up, num);
     }
     else
     {
         int    n    = 0;
         string text = lb_all.Text;
         int.TryParse(text.Substring(1, text.Length - 2), out n);
         n          += num;
         lb_all.Text = "共 " + n + " 个";
     }
 }
Пример #2
0
        private void OnVisibilityChanged(bool visible)
        {
            this.ToTop();

            Node.SetProcessUnhandledInput(visible);

            UpLabel.Iter(l => l.Active    = visible && this.CanGoUp());
            CloseLabel.Iter(l => l.Active = visible);

            if (!visible)
            {
                ItemsContainer.GetChildren()
                .OfType <Node>()
                .Filter(c => !EmptyLabel.Contains(c))
                .Iter(ItemsContainer.FreeChild);
            }
        }
Пример #3
0
        protected override void PostConstruct()
        {
            base.PostConstruct();

            var disposed = Disposed.Where(identity);

            OnItemsChange
            .Do(items => Items = items)
            .TakeUntil(disposed)
            .Subscribe(HandleItemsChange, this);

            OnNavigate
            .Do(_ => UpLabel.Iter(l => l.Active = this.CanGoUp()))
            .Select(i => i.Bind(v => v.GetPath()).Reverse())
            .Select(p => string.Join(" > ", p.Map(v => v.DisplayName)))
            .TakeUntil(disposed)
            .Subscribe(v => Breadcrumb.Iter(b => b.Text = v), this);

            UpLabel
            .Map(l => l.OnAction)
            .ToObservable()
            .Switch()
            .TakeUntil(disposed)
            .Subscribe(_ => this.GoUp());
            CloseLabel
            .Map(l => l.OnAction)
            .ToObservable()
            .Switch()
            .TakeUntil(disposed)
            .Subscribe(_ => this.Hide());

            Node.OnVisibilityChange()
            .StartWith(Visible)
            .TakeUntil(disposed)
            .Subscribe(OnVisibilityChanged, this);

            if (BackAction.IsSome)
            {
                Node.OnUnhandledInput()
                .Where(e => BackAction.Exists(v => e.IsActionPressed(v)) && this.CanGoUp())
                .TakeUntil(disposed)
                .Do(_ => Node.GetTree().SetInputAsHandled())
                .Subscribe(_ => this.GoUp(), this);
            }
        }
Пример #4
0
 public void Dispose()
 {
     FloorNumLabel.Dispose();
     UpLabel.Dispose();
     DownLabel.Dispose();
 }