簡體   English   中英

如何在Xamarin Forms中從父級調用子xaml中的方法?

[英]How to call method in child xaml from parent in Xamarin Forms ?

我需要在另一個中執行一個xaml的繼承,並觸發來自child的調用。 兒童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)
        {
        }

父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"
            >
    <StackLayout>
                <views:NavigationBar/>
    </StackLayout>
</ContentPage>

父xaml.cs:

    private void NavigationBarButton_Clicked(object sender, EventArgs e)
    {
       Get call from child there and do my logic
    }

我怎么能在孩子中觸發點擊通話並將其投入父母?

首先在CustomView中創建一個EventHandler:

public event EventHandler myClickEvent;

然后,添加將被調用的函數(仍在您的customView中:

void myClickEvent(object sender, EventArgs e)
{
    myClickEvent?.Invoke(sender, e);
}

在您的頁面中,將方法綁定到您將被調用的視圖:

  <views:NavigationBar myClickEvent="MyClickEvent"/>

在您的page.xaml.cs中:

void MyClickEvent(object sender, EventArgs e)
    {
        //handle method here
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM