Как программно добавить кнопки или метку в существующую сетку, используя форму Xamarin? - PullRequest
0 голосов
/ 16 мая 2018

Я новичок в Xamarin Form. Мое требование таково. Я хотел бы добавить кнопку или как пользовательскую кнопку или метки и т. Д. Динамически (код позади) по требованию на основе существующего Grid (как код ниже) Xamarin.Form. Но я не знаю, как добавить элементы в существующие Grid, как. Я много пробовал найти образец, но безуспешно.

Мой код XAML, как показано ниже.

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                      xmlns:Status="clr-namespace:SourceCode.Mobile.UI.StatusDetails"                
                     x:Class="SourceCode.Mobile.UI.ConsumableScreen">
    <ContentPage.Content>

        <Grid x:Name="MainGrid" Padding="0" Margin="0,0,0,0" RowSpacing="1" ColumnSpacing="1" BackgroundColor="White">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"></ColumnDefinition>
                <ColumnDefinition Width="*"></ColumnDefinition>
                <ColumnDefinition Width="*"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <!--   These below button should be from code behind dynamically -->

            <Button  Grid.Row="0" Grid.Column="0" Text="Device A" WidthRequest="150" HeightRequest="50" HorizontalOptions="Center" VerticalOptions="Center" BackgroundColor="White" Clicked="Button_1_Clicked"></Button>
            <Button  Grid.Row="0" Grid.Column="1" Text="Device B" WidthRequest="150" HeightRequest="50" HorizontalOptions="Center" VerticalOptions="Center" BackgroundColor="White" Clicked="Button_2_Clicked"></Button>
            <Button  Grid.Row="0" Grid.Column="2" Text="Device C" WidthRequest="150" HeightRequest="50" HorizontalOptions="Center" VerticalOptions="Center" BackgroundColor="White" Clicked="Button_3_Clicked"></Button>
        </Grid>

    </ContentPage.Content>
</ContentPage>

Код позади

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace SourceCode.Mobile.UI
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class ConsumableScreen : ContentPage
    {            

        public ConsumableScreen( )
        {
            InitializeComponent();  
        }   

    }
}

Может кто-нибудь помочь мне, как создать Button или любой другой элемент управления, такой как Label, TextBox и т. Д. На существующей ячейке Grid из кода позади.

Заранее спасибо.

Susheel

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Попробуйте это:

Button button = new Button();
button.Text = "Device B";
button.Clicked = Button_2_Clicked;
button.WidthRequest = 150.0;
button.HeightRequest = 50.0;
button.HorizontalOptions = Xamarin.Forms.LayoutOptions.Center;
button.VerticalOptions = Xamarin.Forms.LayoutOptions.Center;
button.Color = Xamarin.Forms.Color.White;
Grid.SetRow(button, 0);
Grid.SetColumn(button, 1);
MainGrid.Children.Add(button);
0 голосов
/ 16 мая 2018

Вы также можете использовать это, чтобы добавить метку к существующей сетке

Label label = new Label();
label.Text = $"Hello World";

MainGrid.Children.Add(label);
0 голосов
/ 16 мая 2018

Добавьте этот код, например, в конструктор класса xaml.cs

MainGrid.Children.Add(new Label()
        {
            Text = "My new label"
        },0,0);

0, 0 в конце - это номер столбца и строки в сетке.

MainGrid - это имя Grid,который вы добавили в xaml файл

Более подробная информация в документации: https://docs.microsoft.com/en-au/xamarin/xamarin-forms/creating-mobile-apps-xamarin-forms/summaries/chapter17

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...