Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Xamarin.Forms中的父级调用子xaml方法_C#_Xaml_Xamarin_Xamarin.forms - Fatal编程技术网

C# 如何从Xamarin.Forms中的父级调用子xaml方法

C# 如何从Xamarin.Forms中的父级调用子xaml方法,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,我需要在父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="

我需要在父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:

<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调用响应?

在父级的xaml中为子元素设置定义的名称:

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

您可以在孩子监听的父对象上有一个静态事件。您可以查询
Application.Current.MainPage
并强制转换到父类以获取父类的实例。您可以在控件视图上放置一个Page类型的属性,并在实例化时将其设置为父实例。请提供一个例子好吗?在父级中完成相应的逻辑后,是否要在
NavigationBar
上调用方法?@TaylorD,这是正确的,它可能会工作,但如果我设置属性x:Name=“NavBar”,则会发生以下错误:
未找到键入“视图:NavigationBar”。验证是否缺少程序集引用,以及是否已生成所有引用的程序集
如果您的子程序集位于与父程序集不同的(子)命名空间中,请确保将命名空间包括在parent.xaml.cs中的using块中。此外,删除bin/obj文件夹并重建项目也可以解决该问题。
    private void NavigationBarButton_Clicked(object sender, EventArgs e)
    {
        NavigationBar navbar = new NavigationBar();
        navbar.logicFunc(params); 
    }
<views:NavigationBar x:Name="NavBar"
    navigationBarButton_Clicked="NavigationBarButton_Clicked">
</views:NavigationBar>
private void NavigationBarButton_Clicked(object sender, EventArgs e)
{

    NavBar.logicFunc(params); 
}