在Xamarin.Forms
中,我在加载视频时会弹出ActivityIndicator
和label
。如何在视频完全加载后正确地禁用它?
以下是我的xaml (已更新4/26):
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:PreAppStructure"
xmlns:roxv="clr-namespace:Rox;assembly=Rox.Xamarin.Video.Portable"
x:Class="PreAppStructure.Page3"
Title="Welcome to page 3">
<ContentPage.Content>
<Grid>
<roxv:VideoView x:Name="VideoView" AutoPlay="True" LoopPlay="True" ShowController="True" Source="http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4" />
<StackLayout BackgroundColor="Black" HorizontalOptions="Center" VerticalOptions="Center" IsVisible="True">
<ActivityIndicator Color="White"
x:Name="loader"
IsRunning="{Binding IsBusy}"
VerticalOptions="Center" HorizontalOptions="Center"
/>
<Label x:Name ="loadingtext" Text="Loading...Please wait!" HorizontalOptions="Center" TextColor="White" IsVisible="{Binding IsBusy}"/>
</StackLayout>
</Grid>
</ContentPage.Content>
下面是我的C#课程,也是我的几次尝试之一:
...
public partial class Page3 : ContentPage
{
public Page3 ()
{
InitializeComponent ();
this.BindingContext = this;
this.IsBusy = true;
NavigationPage.SetBackButtonTitle(this, "Back");
}
async void OnDoSomethingLong()
{
if (!this.IsBusy)
{
try
{
this.IsBusy = true;
//await long operation here
}
finally
{
this.IsBusy = false;
await Task.Run(() => {
return VideoView;
});
}
}
}
答案 0 :(得分:0)
您应该使用IsVisible属性来隐藏或显示活动指示器
-IsRunning属性用于旋转活动指示器,但它不适用于隐藏或显示活动指示器
在你的情况下使用你应该同时使用IsVisible属性和IsRunning属性,每当IsBusy为true时,活动指示器是可见的并且它将被旋转,如果它是假的,它将不可见并旋转。
删除stackLayout并将活动指示符添加到Grid的子项。
<ActivityIndicator Color="White" x:Name="loader"
IsRunning="{Binding IsBusy}"
IsVisible="{Binding IsBusy}"
VerticalOptions="Center" HorizontalOptions="Center" />