C# 如何从Xamarin.Forms中的父级调用子xaml方法
我需要在父xaml到子xaml中执行回调响应,并在那里做一些事情 子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="
<?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);
}