コード例 #1
0
        private ColumnDefinitionCollection CreateColumnDefinitions()
        {
            var columnDefinitions = new ColumnDefinitionCollection();

            if (this.HorizontalContentAlignment == ManneTableViewContentAlignment.Center)
            {
                columnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(1, GridUnitType.Star)
                });
            }

            foreach (var column in this.ItemsSource.First())
            {
                columnDefinitions.Add(new ColumnDefinition {
                    Width = GridLength.Auto
                });
            }

            if (this.HorizontalContentAlignment == ManneTableViewContentAlignment.Center)
            {
                columnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(1, GridUnitType.Star)
                });
            }

            return(columnDefinitions);
        }
コード例 #2
0
ファイル: Central.cs プロジェクト: ValeryVasina/Volunt-Area
        private Grid CreateGridWithMenu()
        {
            Grid grid = new Grid
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Fill,
            };

            Grid.SetRow(grid, 1);

            ColumnDefinitionCollection cd = grid.ColumnDefinitions;

            cd.Add(MenuColumn);
            cd.Add(new ColumnDefinition
            {
                Width = new GridLength(1, GridUnitType.Star)
            });

            grid.Children.Add(CreateMenuStack());

            ScrollView scroll = new ScrollView
            {
                Content = WorkPlace
            };

            Grid.SetColumn(scroll, 1);

            grid.Children.Add(scroll);

            return(grid);
        }
コード例 #3
0
ファイル: TemplatedGrid.cs プロジェクト: Haus4/NeCo
        private ColumnDefinitionCollection CreateColumnDefinitions()
        {
            var columnDefinitions = new ColumnDefinitionCollection();

            if (this.VerticalContentAlignment == TemplatedGridContentAlignment.Center)
            {
                columnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(1, GridUnitType.Star)
                });
            }

            foreach (var row in this.ItemsSource)
            {
                columnDefinitions.Add(new ColumnDefinition {
                    Width = GridLength.Auto
                });
            }

            if (this.VerticalContentAlignment == TemplatedGridContentAlignment.Center)
            {
                columnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(1, GridUnitType.Star)
                });
            }

            return(columnDefinitions);
        }
コード例 #4
0
ファイル: CheckBox.cs プロジェクト: yz1311/XFControls
        //public static ImageSource DefaultCheckedImg1 {
        //    get {
        //        return DefaultCheckedImg;
        //    }
        //}

        public CheckBox()
        {
            this.TapCmd = new Command(() => {
                this.Checked = !this.Checked;

                if (this.CheckChanged != null)
                {
                    this.CheckChanged.Invoke(this, new EventArgs());
                }

                if (this.CheckChangedCmd != null && this.CheckChangedCmd.CanExecute(this.Checked))
                {
                    this.CheckChangedCmd.Execute(this.Checked);
                }
            });

            var cols = new ColumnDefinitionCollection();

            cols.Add(new ColumnDefinition()
            {
                Width = GridLength.Auto
            });
            cols.Add(new ColumnDefinition()
            {
                Width = GridLength.Auto
            });
            this.Grid = new Grid()
            {
                ColumnDefinitions = cols,
            };

            //绑定内部Tap 命令
            TapBinder.SetCmd(this.Grid, this.TapCmd);

            this.Content = this.Grid;

            this.Label = new Label()
            {
                BindingContext        = this,
                VerticalTextAlignment = TextAlignment.Center
            };
            this.Label.SetBinding(Label.TextProperty, "Text");
            this.Label.SetBinding(Label.IsVisibleProperty, "ShowLabel");
            this.Label.SetValue(Grid.ColumnProperty, 1);

            this.Grid.Children.Add(this.Label);

            this.Icon = new Image()
            {
                WidthRequest  = this.Size,
                HeightRequest = this.Size,
                Source        = this.OffImg
            };
            this.Icon.SetValue(Grid.ColumnProperty, 0);
            this.Grid.Children.Add(this.Icon);
        }
コード例 #5
0
        private void GenerateGrid()
        {
            for (int i = 0; i < 6; i++)
            {
                ColumnDefinitionCollection coldefs = ScheduleGrid.ColumnDefinitions;
                coldefs.Add(new ColumnDefinition());
            }

            DateTime time = _start;

            for (int i = 0; i < _numintervals; i++)
            {
                RowDefinitionCollection rowdefs = ScheduleGrid.RowDefinitions;
                rowdefs.Add(new RowDefinition()
                {
                    MaxHeight = _rowheight,
                    MinHeight = _rowheight,
                });
                Label TimeLabel = new Label()
                {
                    Content = time.ToString("HH:mm"),
                };
                Grid.SetRow(TimeLabel, i);
                Grid.SetColumn(TimeLabel, 0);
                ScheduleGrid.Children.Add(TimeLabel);
                time = time.Add(_interval);
            }
            DrawCourses();
        }
コード例 #6
0
 public static void AddRange(this ColumnDefinitionCollection collection, IEnumerable <ColumnDefinition> columns)
 {
     foreach (var column in columns)
     {
         collection.Add(column);
     }
 }
コード例 #7
0
        public SchedulePage()
        {
            selectDate = DateTime.Now;

            Title = "Schedule";

            isChangedMonth = true;


            // set Button
            beforeBtn.Clicked += BeforeBtn_Clicked;
            nextBtn.Clicked   += NextBtn_Clicked;

            // set grid layout for calendar
            RowDefinitionCollection rowDef = new RowDefinitionCollection();

            for (int i = 0; i < 6; i++)
            {
                rowDef.Add(new RowDefinition {
                    Height = new GridLength(30, GridUnitType.Absolute)
                });
            }
            ColumnDefinitionCollection colDef = new ColumnDefinitionCollection();

            for (int i = 0; i < 7; i++)
            {
                colDef.Add(new ColumnDefinition {
                    Width = new GridLength(20, GridUnitType.Star)
                });
            }
            calenderGrid.RowDefinitions    = rowDef;
            calenderGrid.ColumnDefinitions = colDef;
        }
コード例 #8
0
 public static void AddMultiple(this ColumnDefinitionCollection columnDefinitionCollection, params ColumnDefinition[] columnDefinitions)
 {
     foreach (var definition in columnDefinitions)
     {
         columnDefinitionCollection.Add(definition);
     }
 }
コード例 #9
0
        protected override void OnExecute(UIMessageContext ctx)
        {
            var req = ctx.Get <CreateGridRequest>();

            if (req == null)
            {
                return;
            }

            var target = Surface[req.ParentId];

            if (target == null)
            {
                return;
            }

            var attached      = false;
            var rowCollection = new RowDefinitionCollection();
            var colCollection = new ColumnDefinitionCollection();

            for (var i = 0; i < req.Rows; i++)
            {
                var row = new RowDefinition();
                rowCollection.Add(row);
            }

            for (var j = 0; j < req.Columns; j++)
            {
                var col = new ColumnDefinition();
                colCollection.Add(col);
            }

            var view = new Grid
            {
                RowDefinitions    = rowCollection,
                ColumnDefinitions = colCollection,
                ColumnSpacing     = req.ColumnSpacing,
                RowSpacing        = req.RowSpacing
            };

            Thread.Invoke(() =>
            {
                attached = Surface.SetParent(view, target);
            });

            if (!attached)
            {
                return;
            }

            var pair = Surface[view.Id];

            ctx.SetResponse <CreateWidgetResponse>(res =>
            {
                res.Widget = pair.UIWidget;
                res.Parent = target.UIWidget;
                res.Suggest <GetVisualTreeRequest>();
            });
        }
コード例 #10
0
        public static ColumnDefinition AddColumn(this ColumnDefinitionCollection defn, double Width)
        {
            var coldef = new ColumnDefinition();

            coldef.Width = new GridLength(Width);
            defn.Add(coldef);
            return(coldef);
        }
コード例 #11
0
        public static ColumnDefinition AddAutoColumn(this ColumnDefinitionCollection defn)
        {
            var coldef = new ColumnDefinition();

            coldef.Width = GridLength.Auto;
            defn.Add(coldef);
            return(coldef);
        }
コード例 #12
0
        public static ColumnDefinition AddStarColumn(this ColumnDefinitionCollection defn, int NumberUnits = 1)
        {
            var coldef = new ColumnDefinition();

            coldef.Width = new GridLength(NumberUnits, GridUnitType.Star);
            defn.Add(coldef);
            return(coldef);
        }
コード例 #13
0
 /// <summary>
 /// Clears the Collection and Creates n amount of new definitions
 /// </summary>
 /// <param name="collumns">The collection to refresh</param>
 /// <param name="n">the amount of collumns required</param>
 private static void ResetColumns(ColumnDefinitionCollection collumns, int n)
 {
     collumns.Clear();
     for (int i = 0; i < n; i++)
     {
         collumns.Add(new ColumnDefinition());
     }
 }
コード例 #14
0
ファイル: PlayerShip.cs プロジェクト: khandragon/Battleship
        private void flipGrid(PlayerShip ship)
        {
            Grid GridToTurn = ((Grid)(ship.ImageToShow));

            RowDefinitionCollection    rdc = GridToTurn.RowDefinitions;
            ColumnDefinitionCollection cdc = GridToTurn.ColumnDefinitions;

            if (!IsHorizontal)
            {
                double temp = GridToTurn.Width;
                GridToTurn.Width  = GridToTurn.Height;
                GridToTurn.Height = temp;

                foreach (RowDefinition rd in rdc)
                {
                    ColumnDefinition cd = new ColumnDefinition();
                    cd.Width = new GridLength(10, GridUnitType.Star);
                    cdc.Add(cd);
                }

                for (int i = 0; i < GridToTurn.Children.Count; i++)
                {
                    Grid.SetColumn(GridToTurn.Children[i], i);
                    Grid.SetRow(GridToTurn.Children[i], 0);
                }

                while (rdc.Count > 0)
                {
                    rdc.RemoveAt(rdc.Count - 1);
                }
            }
            else
            {
                double temp = GridToTurn.Height;
                GridToTurn.Height = GridToTurn.Width;
                GridToTurn.Width  = temp;

                foreach (ColumnDefinition cd in cdc)
                {
                    RowDefinition rd = new RowDefinition();
                    rd.Height = new GridLength(10, GridUnitType.Star);
                    rdc.Add(rd);
                }

                for (int i = 0; i < GridToTurn.Children.Count; i++)
                {
                    Grid.SetRow(GridToTurn.Children[i], i);
                    Grid.SetColumn(GridToTurn.Children[i], 0);
                }

                while (cdc.Count > 0)
                {
                    cdc.RemoveAt(cdc.Count - 1);
                }
            }

            IsHorizontal = !IsHorizontal;
        }
コード例 #15
0
        private ColumnDefinitionCollection CreateColumnDefinitions(WLLViewModel vmContext)
        {
            var columnDefinitionCollection = new ColumnDefinitionCollection();

            columnDefinitionCollection.Add(new ColumnDefinition {
                Width = ButtonGridColumnDefWidth
            });

            return(columnDefinitionCollection);
        }
コード例 #16
0
 /// <summary>
 /// Adds the specified amount of columns as simple 'new ColumnDefinition()' with Width set to 'new GridLength(0, GridUnitType.Auto)'
 /// </summary>
 /// <param name="collection"></param>
 /// <param name="amount"></param>
 public static void AddAmount(this ColumnDefinitionCollection collection, int amount)
 {
     for (int i = 0; i < amount; i++)
     {
         collection.Add(new ColumnDefinition()
         {
             Width = new GridLength(0, GridUnitType.Auto)
         });
     }
 }
コード例 #17
0
        private void GridColumnDefinitions()
        {
            ColumnDefinitions = new ColumnDefinitionCollection();

            ColumnDefinition column = new ColumnDefinition()
            {
                Width = GridLength.Star
            };

            ColumnDefinitions.Add(column);
        }
コード例 #18
0
 private void SetColumnDefinitions(ColumnDefinitionCollection coldefs, IEnumerable <GridLength> widths)
 {
     coldefs.Clear();
     foreach (var item in widths)
     {
         coldefs.Add(new ColumnDefinition()
         {
             Width = item
         });
     }
 }
コード例 #19
0
 public static void FixOrderDetailWidth(ColumnDefinitionCollection column)
 {
     if (IsNormalScreenSize())
     {
         return;
     }
     column.RemoveAt(column.Count - 1);
     column.Add(new ColumnDefinition {
         Width = new GridLength(300)
     });
 }
コード例 #20
0
ファイル: Create.cs プロジェクト: CSWCSS-InnoTech/Schobol
            public static ColumnDefinitionCollection Columns(GridUnitType Unit, params double[] Widths)
            {
                ColumnDefinitionCollection Return = new ColumnDefinitionCollection();

                foreach (int Width in Widths)
                {
                    Return.Add(new ColumnDefinition {
                        Width = new GridLength(Width, Unit)
                    });
                }
                return(Return);
            }
コード例 #21
0
        public static ColumnDefinitionCollection GenerateColumnDefinition(params GridLength[] definitions)
        {
            var columnDefinitionCollection = new ColumnDefinitionCollection();

            foreach (var gridLength in definitions)
            {
                columnDefinitionCollection.Add(new ColumnDefinition {
                    Width = gridLength
                });
            }
            return(columnDefinitionCollection);
        }
コード例 #22
0
        private ColumnDefinitionCollection GetColumns(int count)
        {
            var columns = new ColumnDefinitionCollection();

            for (int i = 0; i < count; i++)
            {
                columns.Add(new ColumnDefinition {
                    Width = new GridLength(1, GridUnitType.Star)
                });
            }
            return(columns);
        }
コード例 #23
0
        /*
         * public static readonly BindableProperty LampProperty =
         *  BindableProperty.Create(nameof(Lamp), typeof(string), typeof(PlayerEquipment), default(string), BindingMode.TwoWay);
         * public string Lamp
         * {
         *  get
         *  {
         *      return (string)GetValue(LampProperty);
         *  }
         *
         *  set
         *  {
         *      SetValue(LampProperty, value);
         *  }
         * }
         *
         * public static readonly BindableProperty PickProperty =
         *  BindableProperty.Create(nameof(Pick), typeof(string), typeof(PlayerEquipment), default(string), BindingMode.TwoWay);
         * public string Pick
         * {
         *  get
         *  {
         *      return (string)GetValue(PickProperty);
         *  }
         *
         *  set
         *  {
         *      SetValue(PickProperty, value);
         *  }
         * }
         *
         * public static readonly BindableProperty TrolleyProperty =
         *  BindableProperty.Create(nameof(Trolley), typeof(string), typeof(PlayerEquipment), default(string), BindingMode.TwoWay);
         * public string Trolley
         * {
         *  get
         *  {
         *      return (string)GetValue(TrolleyProperty);
         *  }
         *
         *  set
         *  {
         *      SetValue(TrolleyProperty, value);
         *  }
         * }
         */
        protected override void OnPropertyChanged(string propertyName = null)
        {
            base.OnPropertyChanged(propertyName);

            if (propertyName == EquipmentListProperty.PropertyName)
            {
                var columnDefinitions = new ColumnDefinitionCollection();
                for (int i = 0; i < EquipmentList.Count; i++)
                {
                    columnDefinitions.Add(new ColumnDefinition {
                        Width = new GridLength(41, GridUnitType.Absolute)
                    });
                }

                var rowDefinitions = new RowDefinitionCollection();
                rowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(60, GridUnitType.Absolute)
                });

                EquipmentGrid.ColumnDefinitions = columnDefinitions;
                EquipmentGrid.RowDefinitions    = rowDefinitions;

                for (int i = 0; i < EquipmentList.Count; i++)
                {
                    var tapGestureRecognizer = new TapGestureRecognizer();
                    tapGestureRecognizer.SetBinding(TapGestureRecognizer.CommandProperty, "SelectEquipment");
                    tapGestureRecognizer.CommandParameter = EquipmentList[i].Image;
                    var image = new Image
                    {
                        Source = EquipmentList[i].Image,
                        Aspect = Aspect.AspectFill,
                    };
                    image.GestureRecognizers.Add(tapGestureRecognizer);

                    EquipmentGrid.Children.Add(image, i, 0);
                }
            }

            /*
             * if (propertyName == LampProperty.PropertyName)
             * {
             *  LampImage.Source = Lamp;
             * }
             * else if (propertyName == PickProperty.PropertyName)
             * {
             *  PickImage.Source = Pick;
             * }
             * else if (propertyName == TrolleyProperty.PropertyName)
             * {
             *  TrolleyImage.Source = Trolley;
             * }*/
        }
コード例 #24
0
        public static Grid SetColumnDefinition(this Grid grid, params GridLength[] definitions)
        {
            var columnDefinitionCollection = new ColumnDefinitionCollection();

            foreach (var gridLength in definitions)
            {
                columnDefinitionCollection.Add(new ColumnDefinition {
                    Width = gridLength
                });
            }
            grid.ColumnDefinitions = columnDefinitionCollection;
            return(grid);
        }
コード例 #25
0
            public static ColumnDefinitionCollection ColumnBuilder(params double[] values)
            {
                var result = new ColumnDefinitionCollection();

                foreach (var value in values)
                {
                    result.Add(new ColumnDefinition {
                        Width = new GridLength(value, GridUnitType.Auto)
                    });
                }

                return(result);
            }
コード例 #26
0
            public static ColumnDefinitionCollection Define(params GridLength[] widths)
            {
                var columnDefinitions = new ColumnDefinitionCollection();

                for (var i = 0; i < widths.Length; i++)
                {
                    columnDefinitions.Add(new ColumnDefinition {
                        Width = widths[i]
                    });
                }

                return(columnDefinitions);
            }
コード例 #27
0
        protected override void OnPropertyChanged(string propertyName = null)
        {
            base.OnPropertyChanged(propertyName);

            if (propertyName == HandCardsProperty.PropertyName && HandCards.Cards != null && HandCards.Cards.Count > 0)
            {
                var columnDefinitions = new ColumnDefinitionCollection();

                columnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(100, GridUnitType.Absolute)
                });

                for (int i = 0; i < HandCards.Cards.Count; i++)
                {
                    columnDefinitions.Add(new ColumnDefinition {
                        Width = new GridLength(35, GridUnitType.Absolute)
                    });
                }

                var rowDefinitions = new RowDefinitionCollection();
                rowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(50, GridUnitType.Absolute)
                });

                Hand.ColumnDefinitions = columnDefinitions;
                Hand.RowDefinitions    = rowDefinitions;

                Hand.Children.Add(new Image {
                    Source = HandCards.RoleImage
                }, 0, 0);
                for (int i = 1; i < HandCards.Cards.Count + 1; i++)
                {
                    Hand.Children.Add(new Image {
                        Source = HandCards.Cards[i - 1], Aspect = Aspect.AspectFill
                    }, i, 0);
                }
            }
        }
コード例 #28
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var items = value as IEnumerable <HomeViewModel>;

            var collection = new ColumnDefinitionCollection();

            foreach (var item in items)
            {
                collection.Add(new ColumnDefinition()
                {
                    Width = new GridLength(1, GridUnitType.Star)
                });
            }
            return(collection);
        }
コード例 #29
0
ファイル: Map.xaml.cs プロジェクト: bashnia007/Saboteur
        protected override void OnPropertyChanged(string propertyName = null)
        {
            base.OnPropertyChanged(propertyName);

            if (propertyName == ImagesProperty.PropertyName && Images.Count > 0)
            {
                var rowDefinitions = new RowDefinitionCollection();
                for (int i = 0; i < Images.Count; i++)
                {
                    rowDefinitions.Add(new RowDefinition {
                        Height = new GridLength(50, GridUnitType.Absolute)
                    });
                }

                var columnDefinitions = new ColumnDefinitionCollection();
                for (int i = 0; i < Images[0].Count; i++)
                {
                    columnDefinitions.Add(new ColumnDefinition {
                        Width = new GridLength(35, GridUnitType.Absolute)
                    });
                }

                MapGrid.RowDefinitions    = rowDefinitions;
                MapGrid.ColumnDefinitions = columnDefinitions;

                for (int x = 0; x < Images.Count; x++)
                {
                    var row = Images[0];
                    for (int y = 0; y < row.Count; y++)
                    {
                        var tapGestureRecognizer = new TapGestureRecognizer();
                        tapGestureRecognizer.SetBinding(TapGestureRecognizer.CommandProperty, "SelectImage");
                        tapGestureRecognizer.CommandParameter = row[y].Image;
                        var image = new Image
                        {
                            Source = row[y].Image,
                            Aspect = Aspect.AspectFill,
                        };
                        image.GestureRecognizers.Add(tapGestureRecognizer);

                        MapGrid.Children.Add(image, y, x);
                    }
                }
            }
        }
コード例 #30
0
        private void InitNewGrid(IList <IList <T> > gridElements, int spacing)
        {
            GridElements = gridElements;
            var rowDefinitions    = new RowDefinitionCollection();
            var columnDefinitions = new ColumnDefinitionCollection();

            foreach (var column in gridElements)
            {
                if (column.Count > 0)
                {
                    var columnDefinitionWidth = column.Last().WidthRequest;
                    columnDefinitions.Add(new ColumnDefinition
                    {
                        Width = columnDefinitionWidth > 0 ? columnDefinitionWidth : new GridLength(1, GridUnitType.Star),
                    });
                }
            }

            foreach (var row in gridElements.First())
            {
                rowDefinitions.Add(new RowDefinition {
                    Height = GridLength.Auto
                });
            }

            NewGrid = new Grid
            {
                RowDefinitions    = rowDefinitions,
                ColumnDefinitions = columnDefinitions,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                BackgroundColor   = Color.FromHex("#cccccc"),
                ColumnSpacing     = spacing,
                RowSpacing        = spacing
            };

            for (var index = 0; index < gridElements.Count; index++)
            {
                for (var i = 0; i < gridElements[index].Count; i++)
                {
                    var element = gridElements[index][i];
                    NewGrid.Children.Add(element, index, i);
                }
            }
        }
コード例 #31
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var items = value as IEnumerable<MainContentChildViewModel>;

            var collection = new ColumnDefinitionCollection();
            foreach (var item in items)
            {
                collection.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
                //collection.Add(item.ChildView);
            }
            return collection;
        }
コード例 #32
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var items = value as IEnumerable<ICarouselViewModel>;

            var collection = new ColumnDefinitionCollection();
            foreach (var item in items)
            {
                collection.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
            }
            return collection;
        }
		/// <summary>
		/// Override this method to execute an action when the BindingContext changes.
		/// </summary>
		/// <remarks></remarks>
		protected override void OnBindingContextChanged()
		{
			base.OnBindingContextChanged();

			var container = BindingContext as IList;

			if (container == null)
				return;

			FlowListView flowListView = null;
			if (_flowListViewRef.TryGetTarget(out flowListView) && flowListView != null)
			{
				_flowColumnTemplate = flowListView.FlowColumnTemplate;
				_desiredColumnCount = flowListView.DesiredColumnCount;
				_flowColumnExpand = flowListView.FlowColumnExpand;
			}
				
			// Getting view types from templates
			var containerCount = container.Count;
			IList<DataTemplate> templates = GetDataTemplates(container);
			bool layoutChanged = RowLayoutChanged(containerCount, templates);

			if (!layoutChanged) // REUSE VIEWS
			{
				if (_useGridAsMainRoot)
				{
					for (int i = 0; i < containerCount; i++)
					{
						SetBindingContextForView(_rootLayoutAuto.Children[i], container[i]);
					}
				}
				else
				{
					for (int i = 0; i < containerCount; i++)
					{
						SetBindingContextForView(_rootLayout.Children[i], container[i]);
					}
				}
			}
			else // RECREATE COLUMNS
			{
				if (_useGridAsMainRoot)
				{
					if (_rootLayoutAuto.Children.Count > 0)
						_rootLayoutAuto.Children.Clear();
				}
				else
				{
					if (_rootLayout.Children.Count > 0)
						_rootLayout.Children.Clear();
				}

				_currentColumnTemplates = new List<DataTemplate>(templates);

				if (_useGridAsMainRoot)
				{
					if (_rootLayoutAuto.Children.Count > 0)
						_rootLayoutAuto.Children.Clear();

					var colDefs = new ColumnDefinitionCollection();
					for (int i = 0; i < _desiredColumnCount; i++)
					{
						colDefs.Add(new ColumnDefinition() { Width = new GridLength(1d, GridUnitType.Star) });
					}
					_rootLayoutAuto.ColumnDefinitions = colDefs;

					for (int i = 0; i < containerCount; i++)
					{
						var view = (View)templates[i].CreateContent();

						view.GestureRecognizers.Add(new TapGestureRecognizer()
						{
							Command = new Command(async (obj) =>
							{
								await ExecuteTapGestureRecognizer(view);
							})
						});

						SetBindingContextForView(view, container[i]);
						if (containerCount == 0 || _desiredColumnCount == 0)
							return;

						AddViewToLayoutAutoHeightEnabled(view, containerCount, i);
					}
				}
				else
				{
					if (_rootLayout.Children.Count > 0)
						_rootLayout.Children.Clear();

					for (int i = 0; i < containerCount; i++)
					{
						var view = (View)templates[i].CreateContent();

						view.GestureRecognizers.Add(new TapGestureRecognizer()
						{
							Command = new Command(async (obj) =>
							{
								await ExecuteTapGestureRecognizer(view);
							})
						});

						SetBindingContextForView(view, container[i]);
						if (containerCount == 0 || _desiredColumnCount == 0)
							return;

						AddViewToLayoutAutoHeightDisabled(view, containerCount, i);
					}
				}
			}
		}
コード例 #34
0
ファイル: ToolBarPage.cs プロジェクト: Surfoo/WF.Player
		/// <summary>
		/// Handles the collection changed.
		/// </summary>
		/// <remarks>
		/// The bottom could only have one sort of buttons: text or icons.
		/// If there are more buttons with text than the bottom could hold, than the overflow menu is shown.
		/// </remarks>
		/// <param name="sender">Sender of event.</param>
		/// <param name="e">Collection changed event arguments.</param>
		private void HandleCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
		{
			BottomLayout.Children.Clear();

			var textLayout = new StackLayout() {
				Orientation = StackOrientation.Horizontal,
				HorizontalOptions = LayoutOptions.Fill,
			};

			foreach (ToolButton t in buttons)
			{
				if (t is ToolTextButton)
				{
					var button = new ExtendedButton() 
						{
							Text = (t is ToolTextButton) ? ((ToolTextButton)t).Text : null,
							TextColor = App.Colors.Tint,
							Image = null,
							HorizontalOptions = LayoutOptions.FillAndExpand,
							BackgroundColor = Color.Transparent,
							Command = new Command((parameter) => KeyClick(t.Command, parameter)),
							CommandParameter = (t is ToolTextButton) ? ((ToolTextButton)t).Text : null,
							#if __IOS__
							Font = Font.SystemFontOfSize(20),
							#endif
							IsVisible = t.IsVisibleAtStartup,
						};

					// Save for later use
					t.Button = button;

					// If only one text button, than add to stack layout
					if (buttons.Count <= 1)
					{
						BottomLayout.Children.Add(button);
					}
					else
					{
						textLayout.Children.Add(button);
					}
				}

				if (t is ToolIconButton)
				{
					var button = new ExtendedButton() 
						{
							Text = (t is ToolTextButton) ? ((ToolTextButton)t).Text : null,
							TextColor = App.Colors.Tint,
							Image = (t is ToolIconButton) ? ((ToolIconButton)t).Icon : null,
							HorizontalOptions = Device.OnPlatform<LayoutOptions>(LayoutOptions.FillAndExpand, LayoutOptions.CenterAndExpand, LayoutOptions.FillAndExpand),
							BackgroundColor = Color.Transparent,
							Command = new Command((parameter) => KeyClick(t.Command, parameter)),
							CommandParameter = (t is ToolIconButton) ? ((ToolIconButton)t).Icon : null,
							IsVisible = t.IsVisibleAtStartup,
						};

					// Save for later use
					t.Button = button;

					BottomLayout.Children.Add(button);
				}
			}

			if (buttons.Count == 0 || buttons[0] is ToolIconButton)
			{
				// If the first button is an icon, than we are ready
				return;
			}

			Thickness padding = new Thickness(10, 0);
			double spacing = 6;

			// Get max size of bottom
			var maxWidth = (BottomLayout.Width == -1 ? DependencyService.Get<IScreen>().Width : BottomLayout.Width) - padding.Left - padding.Right;

			if (buttons.Count == 1)
			{
				// We only have one button, so set width to maximum width 
				BottomLayout.Padding = padding;
				buttons[0].Button.WidthRequest = BottomLayout.Width - padding.Left - padding.Right;

				if (((ToolTextButton)buttons[0]).TextWidth > maxWidth)
				{
					// Text is wider than maxWidth, so scale font
					var fontSize = ((ToolTextButton)buttons[0]).Button.FontSize * maxWidth / ((ToolTextButton)buttons[0]).TextWidth - 1;

					((ToolTextButton)buttons[0]).Button.FontSize = fontSize > 14 ? fontSize : 14;
				}

				return;
			}

			// So, now we know, that we have more than one text button.

			// Check, if all buttons fit into the bottom grid.
			double sumWidth = 0;

			// Get width of all buttons
			for (int i = 0; i < buttons.Count; i++)
			{
				sumWidth += ((ToolTextButton)buttons[i]).TextWidth;
			}

			// Add spacing between
			sumWidth += spacing * (buttons.Count - 1);

			// Now check, if all buttons want fit into the bottom line
			if (sumWidth > maxWidth)
			{
				// No. There are more buttons than space, so create an extra menu

				// Create button for extra menu
				var button = new ExtendedButton() 
					{
						Text = OverflowMenuText,
						TextColor = App.Colors.Tint,
						Image = null,
						HorizontalOptions = LayoutOptions.FillAndExpand,
						BackgroundColor = Color.Transparent,
						Command = new Command(HandleOverflowMenuClick),
						#if __IOS__
						Font = Font.SystemFontOfSize(20),
						#endif
					};

				BottomLayout.Children.Add(button);
			}
			else
			{
				// Yes. All buttons should fit into the bottom line.

				// Create grid for buttons
				Grid grid = new Grid() {
					VerticalOptions = LayoutOptions.FillAndExpand,
					HorizontalOptions = LayoutOptions.FillAndExpand,
					RowDefinitions = {
						new RowDefinition { Height = GridLength.Auto },
					},
					ColumnSpacing = 0, //spacing,
				};

				// Create columns for buttons
				var colDefs = new ColumnDefinitionCollection();

				colDefs.Add(new ColumnDefinition { Width = new GridLength(((ToolTextButton)buttons[0]).TextWidth, GridUnitType.Absolute) });

				// Set layout of first button
				buttons[0].Button.HorizontalOptions = LayoutOptions.StartAndExpand;

				// Set width (autosize) and layout of all buttons between first and last
				for (int i = 1; i < buttons.Count - 1; i++)
				{
					colDefs.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); //((ToolTextButton)buttons[i]).TextWidth + padding.Left + padding.Right, GridUnitType.Absolute) });
					buttons[i].Button.HorizontalOptions = LayoutOptions.CenterAndExpand;
				}

				if (buttons.Count == 2)
				{
					// If we only have two buttons, than add an empty col with autosize width
					colDefs.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); // Width = GridLength.Auto }); // 
					colDefs.Add(new ColumnDefinition { Width = new GridLength(((ToolTextButton)buttons[buttons.Count-1]).TextWidth, GridUnitType.Absolute) }); // Width = GridLength.Auto }); // 
					buttons[buttons.Count-1].Button.HorizontalOptions = LayoutOptions.EndAndExpand;
				}
				else
				{
					// If we have more than 2 buttons, than set width to real size of button
					colDefs.Add(new ColumnDefinition { Width = new GridLength(((ToolTextButton)buttons[buttons.Count-1]).TextWidth, GridUnitType.Absolute) }); // Width = GridLength.Auto }); // 
					buttons[buttons.Count-1].Button.HorizontalOptions = LayoutOptions.EndAndExpand;
				}

				// Set column definitions for the buttons
				grid.ColumnDefinitions = colDefs;

				// Add all buttons to the grid
				var index = 0;

				for (int i = 0; i < buttons.Count; i++)
				{
					if (buttons.Count == 2 && i == 1)
					{
						// Add empty col
						index++;
					}

//					grid.Children.Add(new BoxView() { BackgroundColor = Color.FromRgb(i * 64, i * 64, i * 64), }, i + index, 0);
					grid.Children.Add(buttons[i].Button, i + index, 0);
				}

				// Add grid to BottomLayout
				BottomLayout.Padding = padding;
				BottomLayout.Children.Add(grid);
			}
		}
コード例 #35
0
        private ColumnDefinitionCollection CreateColumnDefinitions()
        {
            var columnDefinitions = new ColumnDefinitionCollection();

            if(this.HorizontalContentAlignment == TemplatedTableViewContentAlignment.Center)
            {
                columnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
            }

            foreach(var column in this.ItemsSource)
            {
                columnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
            }

            if(this.HorizontalContentAlignment == TemplatedTableViewContentAlignment.Center)
            {
                columnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
            }

            return columnDefinitions;
        }