

MAUI Blazorを試しています。  
私はTabbedPageとNavigationPageを使用し、ToolbarItemに更新ボタンを作成しました。

この更新ボタンを押したときに、Blazor Componentに対して処理を行いたいと思っています。

各種コンポーネントからのボタン処理はわかりますが、下記のようなケースの場合に、どのような実装方法が良いのかがわかりません。

Blazor、xamlといったことは勉強中で、私が間違っているのだと思います。  
何をヒントに調べていいのかもわからないので、助けを求めました。

TabbedPageSample.xaml

[code]

    <TabbedPage xmlns=... />
        <NavigationPage Title="titleA">
            <x:Argument>
                 <ContentPage.ToolbarItems>
                     <ToolbarItem Text="更新" Clicked="Update_Clicked"></ToolbarItem>
                 </ContentPage.ToolbarItems>
                 <BlazorWebView HostPage="..."/>
                      <BlazorWebView.RootComponents>
                          <RootComponent Selector="#app" ComponentType="{x:Type pages:TestBlazorComponent}"
                      </BlazorWebView.RootComponents>
                 </BlazorWebView>
    
            </x:Argument>
        </NavigationPage>
    </TabbedPage>
    
[/code]

TabbedPageSample.xaml.cs

[code]

    ...
    
    protected async void Update_Clicked(object sender, EventArgs e)
    {
    　/* ここでTestBlazorComponentの処理にアクセスしたい*/
    }
    ...
    
[/code]


CC BY-SA 4.0
2023-01-27T00:19:44.337
93577
2023-02-14T06:18:21.447
2023-01-31T05:05:41.073
3060
56765
question
c# xaml
xaml.cs から Blazor Component の処理にアクセスできますか？


TabbedPage.xaml.csから、Javascriptの呼び出し、Javascriptから任意のコンポーネント内にあるメソッドを呼び出して処理をしたことはあります。  
<https://learn.microsoft.com/ja-jp/aspnet/core/blazor/javascript-
interoperability/call-dotnet-from-javascript?view=aspnetcore-7.0>

jsからコンポーネントのメソッドを呼び出すのにstatic関数にする必要がるようですが、コールバックイベントを活用して任意のメソッドを呼び出すことが出来ました。  
<https://stackoverflow.com/questions/54747257/updating-blazor-via-js-that-
calls-c-sharp-code>

私も似たようなことをしたかったのですが、間接的に呼び出すようにしました。  
正攻法かは不明ですが、ご参考まで。


CC BY-SA 4.0
2023-02-14T06:14:19.627
93832
2023-02-14T06:18:21.447
2023-02-14T06:18:21.447
57095
57095
93577
answer