Вызов макета стека с другой страницы - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю приложение Xamarin.Forms , используя c # .

На странице есть кнопка , и я хочу добавить новую метку в StackLayout , которая находится вMain Page при нажатии кнопки .

Я попытался установить свойство FieldModifier для StackLayout public в XAML файл, но он не работает ...

Это код макета (я хочу добавить метку в MainStackLayout) и метод cs для кнопки Button . :

 <ContentPage.Content>
    <ScrollView>
        <StackLayout BackgroundColor="white">
            <StackLayout Orientation="Horizontal" x:Name="MainStackLayout" x:FieldModifier="public" >
            </StackLayout>
            <Button 
                Text="Add Counter"
                BackgroundColor="darkgreen"
                HorizontalOptions="FillAndExpand"
                CornerRadius="0"
                HeightRequest="80"
                TextColor="white"
                FontAttributes="Bold"
                x:Name="AddCounter_btn"
               Clicked="AddCounter_btn_Clicked"
               >

            </Button>
        </StackLayout>
    </ScrollView>
</ContentPage.Content>

private void StartCount_btn_Clicked(object sender,EventArgs e)
{
    Label NCounterName =new Label();
    NCounterName.Text = counter_txt.Text.ToString();
    Label NCounterNumber = new Label();
    NCounterNumber.Text = "0000";`enter code here`
}

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Я написал этот код здесь, не смог проверить его, но он будет работать. Ваша кнопка дает вам достаточно информации, чтобы добраться до любого вида. Вы просто используете родительско-дочерние элементы управления.

private void StartCount_btn_Clicked(object sender,EventArgs e)
{
    if(sender is Button myButton)
    {
        if(myButton.Parent is StackLayout myStackLayout)
        {
            Label NCounterName =new Label();
            //set your label's text
            myStackLayout.Add.Children(NCounterName);
        }
    }
}
0 голосов
/ 11 ноября 2019

Допустим, у вас есть кнопка в Page1, которая StartCount_btn, и когда вы нажимаете эту кнопку, вы хотите добавить некоторые метки к MainStackLayout в Page2.

В Page1 , отправьте addLabelNotification при нажатии кнопки StartCount_btn:

private void StartCount_btn_Clicked(object sender, EventArgs e)
{
    MessagingCenter.Send<Object>(this, "addLabelNotification");
}

В Page2 , Подписаться насообщение и добавьте метки при получении сообщения:

public partial class Page2 : ContentPage
{
    public Page2()
    {
        InitializeComponent();

        MessagingCenter.Subscribe<Object>(this, "addLabelNotification", (sender) =>
        {
            // Do something whenever the "addLabelNotification" message is received

            Label NCounterName = new Label();
            NCounterName.Text = "counter_txt";
            Label NCounterNumber = new Label();
            NCounterNumber.Text = "0000";

            MainStackLayout.Children.Add(NCounterName);
            MainStackLayout.Children.Add(NCounterNumber);

        });
    }
}

См .: Центр обмена сообщениями

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