Наложение индикатора активности Xamarin Forms Prism при нажатии пользовательской кнопки на панели инструментов

Я пытаюсь показать наложение с ActivityIndicator, нажав пользовательскую кнопку синхронизации на панели инструментов. Кнопка делает вызов API, чтобы получить данные из моего бэкэнда.

Я использую формы Xamarin с плагином Prism

Это мой MasterDetailPage Xaml

<MasterDetailPage.ToolbarItems >
    <ToolbarItem Command="{Binding SyncCommand}" Icon="sync32.png">
    </ToolbarItem>
</MasterDetailPage.ToolbarItems>
<MasterDetailPage.Master  >


    <ContentPage Title="Default" 
                 BackgroundColor="Gray">   
        <StackLayout Padding="0,60,0,0">
            <ListView x:Name="Menu" 
                      VerticalOptions="FillAndExpand" 
                      HorizontalOptions="Fill" 
                      ItemsSource="{Binding Items}"
                     SeparatorVisibility="None">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout MinimumHeightRequest="48"
                                Orientation="Horizontal" 
                                         Spacing="40">
                                <Label Text="{Binding TitleKey}" 
                                       TextColor="White" 
                                       FontSize="20" 
                                       VerticalOptions="Center"/>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
                <ListView.Behaviors>
                    <behaviors:ListViewItemSelectedBehavior Command="{Binding ChangePageCommand }"/>
                </ListView.Behaviors>
            </ListView>
        </StackLayout>

    </ContentPage>
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
    <ContentPage>
        <AbsoluteLayout
             VerticalOptions="FillAndExpand"  
            HorizontalOptions="FillAndExpand">

            <ActivityIndicator  
            Color="#69d2e7"  
            RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent,
                                    Property=Height,
                                    Factor=0.33}"
            RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent,
                                    Property=Height,
                                    Factor=0.33}"
            IsVisible="{Binding IsBusy}"
            IsRunning="{Binding IsBusy}"
            />


        </AbsoluteLayout>
    </ContentPage>
</MasterDetailPage.Detail>

Это мой MasterDetail XAML CS

  public SMasterDetail()
    {
        InitializeComponent();
        Menu.ItemSelected += async (s, e) =>
        {
            Menu.SelectedItem = null;
            IsPresented = false;
            await Task.Delay(200);
        };
    }

Когда я нажимаю кнопку "Синхронизация" на панели инструментов, ViewModel получает данные из серверной части и заполняет ObservableCollection. Я устанавливаю IsBusy в true и после этого в false.

Но я не вижу наложения. Есть ли какое-либо решение, как показать оверлей ActivityIndicator на каждой странице, нажав кнопку синхронизации?

0 ответов

Другие вопросы по тегам