Я хочу вызвать функцию из файла .xaml.cs со страницы .blazor. Цель состоит в том, чтобы вызвать его при нажатии определенной кнопки, но я не могу найти никакой информации о том, как это сделать; самое большее, что я нашел, это общение с MainLayout.razor, что мне не помогло. Непосредственная вставка кнопки в файл .xaml также не будет работать, поскольку мне нужно, чтобы она была недоступна, за исключением определенных условий, определенных на странице .blazor. Я попробовал Application.Current.MainPage, но, к сожалению, это не позволяет мне получить доступ к функции. Любая помощь приветствуется!
В идеале код блазора должен выглядеть примерно так:
<button @onclick = "ActivatesXAMLFunction">Activate .xaml Function</button>
@code {
protected async Task ActivatesXAMLFunction()
{
var mainPage = Microsoft.Maui.Controls.Application.Current.MainPage as MainPage;
if (mainPage == null){ }
else
{
await mainPage.XAMLFunction();
}
}
}
который вызовет функцию в классе MainPage.xaml:
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
public async Task XAMLFunction()
{
//XAMLFunction code
}
}
Код App.xaml.cs:
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new MainPage());
}
}





Я использую Application.Current.MainPage и могу получить доступ к функции на странице XAML.
<button @onclick = "ActivatesXAMLFunction">Activate .xaml Function</button>
@code {
public async Task ActivatesXAMLFunction()
{
NavigationPage mainpage = Application.Current.MainPage as NavigationPage;
MainPage rootpage = mainpage.RootPage as MainPage;
await rootpage.XAMLFunction();
}
И в MainPage коде,
public MainPage()
{
InitializeComponent();
}
public async Task XAMLFunction()
{
Console.WriteLine("123");
}
}
При нажатии кнопки можно вызвать XAMLFunction на главной странице.
После устранения некоторых других ошибок в моем коде, которые сработали первыми, в строке System.NullReferenceException: 'Object reference not set to an instance of an object' выдается ошибка await mainPage.XAMLFunction();. Кажется, что mainPage всегда имеет значение null.
На самом деле это работает на моей стороне (возможно, потому что я использую только шаблон Blazor по умолчанию). Чтобы воспроизвести это исключение, не могли бы вы также поделиться дополнительным кодом, например App.xaml.cs и MainPage.xaml, или любой связанной информацией о том, как его воспроизвести.
Максимально обновлена функция blazor и добавлен код App.xaml.cs.
Я думаю, это потому, что вы установили MainPage как NavigationPage в App.xaml.cs. Я обновляю некоторые изменения для ActivatesXAMLFunction. Пожалуйста, попробуйте.
Не могли бы вы включить какой-нибудь соответствующий код, чтобы помочь нам понять, чего вы хотите достичь?