Beispiel #1
0
        protected override void CreateContent(StackLayout details)
        {
            LabelIcon filterIcon = ControlFactory.CreateIcon(LabelHandler.FILTER_SYMBOL, ControlFactory.Small_Label_Icon);

            SetProjectFilterName(filterIcon);

            object[] expenseDetailsRows =
            {
                new Xamarin.Forms.View[] {
                    ControlFactory.CreateStaticLabel(AppResources.Project),
                    filterIcon,
                },
                projectPicker,
                null,
                ControlFactory.CreateStaticLabel(AppResources.Category),
                categoryPicker,
                null,
                ControlFactory.CreateStaticLabel(AppResources.Date),
                transactionDatePicker,
                null,
                new Xamarin.Forms.View[] {
                    ControlFactory.CreateStaticLabel(AppResources.Amount),
                    ControlFactory.CreateStaticLabel(AppResources.Currency)
                },
                new Xamarin.Forms.View[] {
                    amountEntry,
                    currencyPicker
                },
                null,
                ControlFactory.CreateStaticLabel(AppResources.SalesTax),
                salesTaxEntry,
                null,
                ControlFactory.CreateStaticLabel(AppResources.Description),
                descriptionEditor
            };

            TapGestureRecognizer filterTapGestureRecognizer = new TapGestureRecognizer()
            {
                NumberOfTapsRequired = 1
            };

            filterTapGestureRecognizer.Tapped += FilterProject;
            filterIcon.GestureRecognizers.Add(filterTapGestureRecognizer);

            // Add Expense preview at top of the page
            Grid expensePreview = new ExpensePreview();

            expensePreview.SetBinding <ExpenseViewModel>(Grid.BindingContextProperty, vm => vm.Expense, BindingMode.OneWay);
            expensePreview.RowDefinitions[0].Height = 0; // Remove default margin at top
            expensePreview.RowDefinitions.Add(new RowDefinition {
                Height = 10
            });                                                                   //Margin bottom
            details.Children.Add(expensePreview);

            // Add expense details
            Grid expenseDetails = new Grid();

            expenseDetails.ColumnDefinitions = new ColumnDefinitionCollection
            {
                new ColumnDefinition {
                    Width = 10
                },                                // 0.Margin
                new ColumnDefinition {
                    Width = new GridLength(1, GridUnitType.Star)
                },                                                                  // 1. 1st column
                new ColumnDefinition {
                    Width = new GridLength(1, GridUnitType.Star)
                },                                                                  // 2. 2nd column
                new ColumnDefinition {
                    Width = 10
                }                                // 3.margin
            };
            expenseDetails.ColumnSpacing = 2;
            expenseDetails.RowSpacing    = 0;
            ControlFactory.AutoFill(expenseDetails, expenseDetailsRows, 1, 2);
            details.Children.Add(new ScrollView()
            {
                Content = expenseDetails
            });
        }