Пример #1
0
        public override void ViewDidLoad()
        {
            if (NavigationParameter == null)
            {
                throw new InvalidOperationException("No parameter found after navigation");
            }

            Vm = (FlowerViewModel)NavigationParameter;

            DescriptionText = new UILabel(new CGRect(0, 0, 300, 235))
            {
                LineBreakMode = UILineBreakMode.WordWrap,
                Lines         = 0,
            };
            Scroll.Add(DescriptionText);

            FlowerImage.SetImage(
                new NSUrl(Vm.ImageUri.AbsoluteUri),
                UIImage.FromBundle("flower_256_magenta.png"));

            this.SetBinding(
                () => Vm.Model.Name)
            .WhenSourceChanges(
                () =>
            {
                // iOS is quite primitive and requires layout recalculation when the content
                // of UI elements changes. This is a good place to do that.

                NameText.Text = Vm.Model.Name;
                NameText.SizeToFit();
                NameText.Frame = new CGRect(140, 75, 170, NameText.Bounds.Height);
            });

            this.SetBinding(
                () => Vm.Model.Description)
            .WhenSourceChanges(
                () =>
            {
                DescriptionText.Text = Vm.Model.Description;
                DescriptionText.SizeToFit();
                DescriptionText.Frame = new CGRect(
                    0,
                    0,
                    Scroll.Bounds.Width - 20,
                    DescriptionText.Bounds.Height);

                Scroll.ContentSize = new CGSize(Scroll.Bounds.Width - 20, DescriptionText.Bounds.Height + 20);
                Scroll.SetNeedsLayout();
            });

            SeeCommentsButton.TouchUpInside += (s, e) =>
            {
                var nav = ServiceLocator.Current.GetInstance <INavigationService>();
                nav.NavigateTo(AppDelegate.SeeCommentsPageKey, Vm);
            };

            base.ViewDidLoad();
        }
Пример #2
0
        public void SetData(List <WeightData> data, double initial, double target)
        {
            Title.SetData(initial, target, "Peso inicial", "Objetivo", "kg");
            double min = data.Min(x => x.Value);

            if (initial < min)
            {
                min = initial;
            }
            if (target < min)
            {
                min = target;
            }
            min = min - min % 5 - 5;
            double max = data.Max(x => x.Value);

            if (initial > max)
            {
                max = initial;
            }
            if (target > max)
            {
                max = target;
            }
            max = max + (5 - max % 5) + 5;
            //while ((max - min) <30)
            //    min = min - 5;
            List <float> axisValues = new List <float>()
            {
                (float)(min), (float)((max - min) / 4 + min), (float)(2 * (max - min) / 4 + min), (float)(3 * (max - min) / 4 + min), (float)(max)
            };

            Axis.SetData(axisValues);

            int      visibleDays = 60;
            DateTime minDate     = data.Min(x => x.Date);

            minDate = minDate.AddHours(-minDate.Hour).AddMinutes(-minDate.Minute).AddSeconds(-minDate.Second).AddMilliseconds(-minDate.Millisecond);
            DateTime maxDate = DateTime.Now.AddDays(1);

            maxDate = maxDate.AddHours(-maxDate.Hour).AddMinutes(-maxDate.Minute).AddSeconds(-maxDate.Second).AddMilliseconds(-maxDate.Millisecond);
            while (maxDate.AddDays(1).Day > 1)
            {
                maxDate = maxDate.AddDays(1);
            }
            while (maxDate.Ticks - minDate.Ticks < visibleDays * TimeSpan.TicksPerDay)
            {
                minDate = minDate.AddDays(-1);
            }
            while (minDate.Day > 1)
            {
                minDate = minDate.AddDays(-1);
            }
            int    days     = (int)((maxDate.Ticks - minDate.Ticks) / TimeSpan.TicksPerDay) + 1;
            nfloat dayWidth = Scroll.Frame.Width / visibleDays;

            if (dataView != null)
            {
                dataView.RemoveFromSuperview();
            }
            dataView       = new GraphDataView();
            dataView.Frame = new CoreGraphics.CGRect(0, 0, days * dayWidth, Scroll.Frame.Height);
            dataView.SetData(minDate, days, data, max, min, initial, target);
            Scroll.ContentSize = new CoreGraphics.CGSize(days * dayWidth, Scroll.Frame.Height);
            Scroll.ScrollRectToVisible(new CoreGraphics.CGRect(days * dayWidth - Scroll.Frame.Width, 0, Scroll.Frame.Width, Scroll.Frame.Height), false);
            Scroll.Add(dataView);

            SetNeedsDisplay();
            DateTime maxDataDate = data.Max(x => x.Date);
            nfloat   pos         = dataView.GetPositionForDate(maxDataDate.AddDays(-visibleDays + 1));

            Scroll.ScrollRectToVisible(new CoreGraphics.CGRect(pos, 0, Scroll.Frame.Width, Scroll.Frame.Height), false);
        }