我在MAUI Blazor Hybrid应用程序中有一个ContentPage,它带有一个显示基本表单组件的BlazorWebView(BWV)。我知道如何将参数传递给BWV的RootComponent,以便Blazor组件可以访问信息,但我不知道如何反向操作,将组件的响应传递给. xaml.cs代码隐藏文件。本质上,我想做一个EventCallBack,就像Blazor中的子组件将信息传递给其父组件一样。我似乎找不到任何关于这方面的信息,所以任何帮助将不胜感激!
我尝试在Blazor组件中创建一个EventCallBack,并将其绑定到XAML中的BWV,但我似乎找不到合适的方法来实现这一点。
1条答案
按热度按时间w9apscun1#
你的问题不是很清楚,但我假设你正在尝试在blazor页面和maui页面之间共享数据/信息。为此,我将使用依赖注入和状态容器来存储和共享数据。
创建一个类并通过依赖注入添加它。(也可以使用接口)。下面的代码片段可能会有所帮助。
创建类来保存数据:MySessionValues.cs
为依赖注入注册类:MauiProgram.cs
现在在你的blazor页面中,注入MySessionValues类:MyBlazorPage1.razor
你的状态在页面之间保持不变,因为它是一个单例。在Maui页面端,依赖注入从根应用程序启动。因此,在app.xaml.cs文件中,像这样将state类注入到构造函数中。
然后,每当你想在任何Maui页面中使用MySessionValues时,只需将其注入到该页面的构造函数中,如下所示:TestMauiPage.xaml.cs
在TestMauiPage.xaml中:只需命名默认标签,这样您就可以从代码中引用它,或者您可以使用绑定。你应该看到你的价值观。
请记住,无论何时调用Maui页面,都必须传递一个MySessionValues,因为构造函数不再是无参数的。例
注意:在app.xaml.cs文件中,最好将_mySessionValues注入MainPage,这样你的状态就可以被你的根maui页面访问。
如果你需要同时显示Maui页面和Razor页面,并进行真实的数据交换,那么你需要在你的类中订阅一个Notification事件。