Как я могу вызвать дочерний метод xaml от родителя в Xamarin.Forms - PullRequest
0 голосов
/ 06 июля 2018

Мне нужно выполнить ответный вызов в родительском xaml для дочернего xaml, и сделать что-то там

Ребенок xaml:

<?xml version="1.0" encoding="UTF-8"?>
    <ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 x:Class="project.NavigationBar">
        <ContentView.Content>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <StackLayout 
                        Orientation="Horizontal"
                        Grid.Column="0"
                        HorizontalOptions="CenterAndExpand"
                        VerticalOptions="End">
                        <Button
                            x:Name="NavigationBarButton" 
                            Clicked="NavigationBarButton_Clicked" 
                            Text="Gallery">
                        </Button>
                    </StackLayout>
                </Grid>
        </ContentView.Content>
    </ContentView>

Ребенок xaml.cs:

    private void NavigationBarButton_Clicked(object sender, EventArgs e)
    {
        navigationBarButton_Clicked?.Invoke(sender, e);
    }

    public void logicFunc(params)
    {
       do stuff there
    }

Родительский xaml:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="project.main"
             xmlns:views="project.NavigationBar"
            >
        <views:NavigationBar
            navigationBarButton_Clicked="NavigationBarButton_Clicked">
        </views:NavigationBar>
</ContentPage>

Родительский xaml.cs:

    private void NavigationBarButton_Clicked(object sender, EventArgs e)
    {
        NavigationBar navbar = new NavigationBar();
        navbar.logicFunc(params); 
    }

Как я могу вызвать родительский ответ для дочернего xaml?

1 Ответ

0 голосов
/ 09 июля 2018

Установите определенное имя для вашего дочернего элемента в xaml родителя:

<views:NavigationBar x:Name="NavBar"
    navigationBarButton_Clicked="NavigationBarButton_Clicked">
</views:NavigationBar>

затем в методе, вызываемом обработчиком события (в родительском представлении), вы можете получить доступ к элементу через его имя и вызвать открытый метод:

private void NavigationBarButton_Clicked(object sender, EventArgs e)
{

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