상속: Xamarin.Forms.ContentView
예제 #1
0
        public PopupDatePicker()
        {
            Orientation       = ScrollOrientation.Horizontal;
            HorizontalOptions = LayoutOptions.Center;
            Padding           = 0;
            BackgroundColor   = StyleManager.DarkAccentColor;

            var now = DateTime.Now;

            monthTiles = new List <TopPanelItem>();

            for (int i = 1; i <= 12; i++)
            {
                IEnumerable <DateTime> days = CalendarHelper.GetDaysInMonth(i, now.Year);
                var dayPicker = new DayPicker(CalendarHelper.CreateDayLayouts(days));
                dayPicker.DateChanged += (sender, e) => {
                    SelectedDay = dayPicker.SelectedItem;
                    DateChanged(sender, e);
                };

                var month = new DateTime(now.Year, i, 1, 0, 0, 0, DateTimeKind.Local);
                var tab   = new TopPanelItem(month.ToString("MMMM", new CultureInfo("en-US")), dayPicker)
                {
                    WidthRequest = 100
                };

                if (month.Month == now.Month)
                {
                    tab.IsSelected   = true;
                    currentMonthTile = tab;
                }
                monthTiles.Add(tab);
            }

            monthPicker = new PopupTopPanel(monthTiles);

            monthPicker.DefaultView = currentMonthTile.ContentView;
            DefaultView             = monthPicker.DefaultView;
            Content = monthPicker;

            ScrollEnded += (sender, args) => {
                var position = (int)Math.Round(ScrollX / 115);

                if (position >= 0 && position < monthTiles.Count)
                {
                    SelectMonthTile(monthTiles[position]);
                }
            };

            Scrolled += (sender, args) => {
                var position = (int)Math.Round(args.ScrollX / 115);

                if (position >= 0 && position < monthTiles.Count)
                {
                    HighlightItem(position);
                }
            };
        }
예제 #2
0
        public HomeTopPanel(DateTime selectedDate)
        {
            SelectedDate  = selectedDate;
            selectedMonth = SelectedDate.Month;
            selectedYear  = selectedDate.Year;
            // Today's content view.
            var currentDayLayout = new ContentView {
                Padding = 6,
                Content = new DefaultLabel {
                    HorizontalOptions = LayoutOptions.Center,
                    Text = selectedDate.ToString("dddd", new CultureInfo("en-US"))
                }
            };

            calendarView = new CalendarView {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.CenterAndExpand
            };

            // Home page tabs.
            todayButton = new TopPanelItem("Today", currentDayLayout, true);
            monthButton = new TopPanelItem(SelectedDate.ToString("MMMM", new CultureInfo("en-US")));
            yearButton  = new TopPanelItem(SelectedDate.Year.ToString(), calendarView);

            Items = new List <TopPanelItem> {
                todayButton, monthButton, yearButton
            };

            Children.Add(todayButton);
            Children.Add(monthButton);
            Children.Add(yearButton);

            DefaultView        = todayButton.ContentView;
            LastView           = todayButton.ContentView;
            todayButton.OnTap += SelectToday;
            yearButton.OnTap  += ShowCalender;
            monthButton.OnTap += ShowMonthLayout;

            calendarView.MonthChanged += (sender, newMonth) => ChangeMonth(newMonth);
            calendarView.DateSelected += (sender, newDate) => {
                SelectDate(newDate);
                ShowMonthLayout();
            };

            BottomPanel    = new ContentView();
            OnItemSelected = view => {
                if (view != null)
                {
                    BottomPanel.Content = view;
                }
            };
            BottomPanel.Content = DefaultView;
        }
예제 #3
0
        private void SelectMonthTile(TopPanelItem selectedMonthTile)
        {
            monthTiles [SelectedItem].IsSelected = false;

            selectedMonthTile.IsSelected = true;
            SelectedItem = monthTiles.IndexOf(selectedMonthTile);
            ScrollToAsync(SelectedItem * 115, 0, false);

            OnItemSelected.Dispatch(selectedMonthTile.ContentView);

            SelectDay(1);
        }
        public PopupDatePicker()
        {
            Orientation = ScrollOrientation.Horizontal;
            HorizontalOptions = LayoutOptions.Center;
            Padding = 0;
            BackgroundColor = StyleManager.DarkAccentColor;

            var now = DateTime.Now;
            monthTiles = new List<TopPanelItem>();

            for (int i = 1; i <= 12; i++) {
                IEnumerable<DateTime> days = CalendarHelper.GetDaysInMonth(i, now.Year);
                var dayPicker = new DayPicker(CalendarHelper.CreateDayLayouts(days));
                dayPicker.DateChanged += (sender, e) => {
                    SelectedDay = dayPicker.SelectedItem;
                    DateChanged (sender, e);
                };

                var month = new DateTime (now.Year, i, 1, 0, 0, 0, DateTimeKind.Local);
                var tab = new TopPanelItem(month.ToString("MMMM", new CultureInfo("en-US")), dayPicker) {
                    WidthRequest = 100
                };

                if (month.Month == now.Month) {
                    tab.IsSelected = true;
                    currentMonthTile = tab;
                }
                monthTiles.Add(tab);
            }

            monthPicker = new PopupTopPanel(monthTiles);

            monthPicker.DefaultView = currentMonthTile.ContentView;
            DefaultView = monthPicker.DefaultView;
            Content = monthPicker;

            ScrollEnded += ( sender, args ) => {
                var position = (int) Math.Round(ScrollX/115);

                if (position >= 0 && position < monthTiles.Count)
                    SelectMonthTile(monthTiles[position]);
            };

            Scrolled += ( sender, args ) => {
                var position = (int) Math.Round(args.ScrollX/115);

                if (position >= 0 && position < monthTiles.Count)
                    HighlightItem(position);
            };
        }
        public HomeTopPanel( DateTime selectedDate)
        {
            SelectedDate = selectedDate;
            selectedMonth = SelectedDate.Month;
            selectedYear = selectedDate.Year;
            // Today's content view.
            var currentDayLayout = new ContentView {
                Padding = 6,
                Content = new DefaultLabel {
                    HorizontalOptions = LayoutOptions.Center,
                    Text = selectedDate.ToString("dddd", new CultureInfo("en-US"))
                }
            };

            calendarView = new CalendarView {
                VerticalOptions = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.CenterAndExpand
            };

            // Home page tabs.
            todayButton = new TopPanelItem("Today", currentDayLayout, true);
            monthButton = new TopPanelItem(SelectedDate.ToString("MMMM", new CultureInfo("en-US")));
            yearButton = new TopPanelItem(SelectedDate.Year.ToString(), calendarView);

            Items = new List<TopPanelItem> {todayButton, monthButton, yearButton};

            Children.Add(todayButton);
            Children.Add(monthButton);
            Children.Add(yearButton);

            DefaultView = todayButton.ContentView;
            LastView = todayButton.ContentView;
            todayButton.OnTap += SelectToday;
            yearButton.OnTap += ShowCalender;
            monthButton.OnTap += ShowMonthLayout;

            calendarView.MonthChanged += (sender, newMonth) => ChangeMonth(newMonth);
            calendarView.DateSelected += (sender, newDate) => {
                SelectDate (newDate);
                ShowMonthLayout();
            };

            BottomPanel = new ContentView ();
            OnItemSelected = view => {
                if (view != null)
                    BottomPanel.Content = view;
            };
            BottomPanel.Content = DefaultView;
        }
예제 #6
0
 protected override void SelectItem(TopPanelItem item)
 {
     base.SelectItem(item);
     OnItemSelected.Dispatch(item.ContentView);
 }
        private void SelectMonthTile(TopPanelItem selectedMonthTile)
        {
            monthTiles [SelectedItem].IsSelected = false;

            selectedMonthTile.IsSelected = true;
            SelectedItem = monthTiles.IndexOf(selectedMonthTile);
            ScrollToAsync(SelectedItem*115, 0, false);

            OnItemSelected.Dispatch(selectedMonthTile.ContentView);

            SelectDay (1);
        }
 protected override void SelectItem( TopPanelItem item )
 {
     base.SelectItem(item);
     OnItemSelected.Dispatch (item.ContentView);
 }