Xamarin.Forms.Skeleton - Почему не отображается анимация и BackgroundColor плагина?
Я реализовал плагин Skeleton в своем приложении xamarin.form. Он отлично работает на моей странице списка. Затем я пробую это в моем элементе listView, анимация и скелет backgroundColor не работают. Функция работает нормально, и в моей сборке нет ошибок.
Вот что я пробовал:
<ScrollView BackgroundColor="White">
<StackLayout
Margin="15"
extension:Skeleton.IsParent="True"
extension:Skeleton.IsBusy="{Binding IsLoadBusy}"
extension:Skeleton.BackgroundColor="{StaticResource GrayColor}"
extension:Skeleton.Animation="Fade"
extension:Skeleton.AnimationInterval="600">
<Image
x:Name="ImgSelfie"
HeightRequest="200" WidthRequest="200" BackgroundColor="White"
Source="selfie"
extension:Skeleton.IsBusy="{Binding IsLoadBusy}"
extension:Skeleton.Animation="Fade"
extension:Skeleton.BackgroundColor="{StaticResource DarkGrayColor}"/>
<Label Text="Location :" FontAttributes="Bold"/>
<Editor
Text="{Binding Attend.AddressDetail}" x:Name="EdtLocation" IsEnabled="False" AutoSize="TextChanges"
extension:Skeleton.IsBusy="{Binding IsLoadBusy}"
extension:Skeleton.Animation="Fade"
extension:Skeleton.BackgroundColor="{StaticResource DarkGrayColor}"/>
<Label Text="Time :" FontAttributes="Bold"/>
<Entry
Text="{Binding Attend.Created}" x:Name="EntTime" IsEnabled="False"
extension:Skeleton.IsBusy="{Binding IsLoadBusy}"
extension:Skeleton.Animation="Fade"
extension:Skeleton.BackgroundColor="{StaticResource DarkGrayColor}" />
<Label Text="Action :" FontAttributes="Bold"/>
<Label
Text="{Binding Attend.Activity}" x:Name="LblAction" FontSize="Medium" TextColor="Black"
extension:Skeleton.IsBusy="{Binding IsLoadBusy}"
extension:Skeleton.Animation="Fade"
extension:Skeleton.BackgroundColor="{StaticResource DarkGrayColor}"/>
<Label Text="Noted :" FontAttributes="Bold"/>
<Editor
Text="{Binding Attend.Note}" x:Name="EntNote" IsEnabled="False" AutoSize="TextChanges"
extension:Skeleton.IsBusy="{Binding IsLoadBusy}"
extension:Skeleton.Animation="Fade"
extension:Skeleton.BackgroundColor="{StaticResource DarkGrayColor}"/>
<StackLayout VerticalOptions="EndAndExpand">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<material:MaterialButton
mvx:Bi.nd="Command OnCancelButtonCommand" Text="Confirm"
ButtonType="Outlined" BorderColor="Black" BackgroundColor="White"
TextColor="Black" PressedBackgroundColor="Gray" BorderWidth="2" WidthRequest="25" Padding="15"/>
</Grid>
</StackLayout>
</StackLayout>
</ScrollView>
public async Task PerformShimmerAsyncTask(string id)
{
this.Attend = new Attendance
{
//Image = null,
AddressDetail = "x",
Created = DateTime.Now,
Activity = "x",
Note = "x"
};
this.IsLoadBusy = true;
await Task.Delay(2500);
this.IsLoadBusy = false;
//await GetItem(id);
this.Attend = new Attendance
{
//Image = "selfie.png",
AddressDetail = "asdasdasda",
Created = DateTime.Now,
Activity = "sadasdasdasfacf",
Note = "asuuusfasfa"
};
}
следующее на основе этого примера.
Пожалуйста, помогите и поправьте, если мой вопрос еще не ясен.
1 ответ
Решение
Я использую ваш код, и он хорошо работает на моей стороне, я могу показать вам свой образец проекта.
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
myViewModel vm = new myViewModel();
this.BindingContext = vm;
vm.PerformShimmerAsyncTask("123");
}
}
public class myViewModel : BaseViewModel
{
private MyModel _attend;
private bool _isLoadBusy = false;
public MyModel Attend
{
get { return _attend; }
set { SetProperty(ref _attend, value); }
}
public bool IsLoadBusy
{
get { return _isLoadBusy; }
set
{
_isLoadBusy = value;
OnPropertyChanged();
}
}
public async Task PerformShimmerAsyncTask(string id)
{
this.Attend = new MyModel
{
AddressDetail = "x",
Created = DateTime.Now,
Activity = "x",
Note = "x"
};
this.IsLoadBusy = true;
await Task.Delay(10000);
this.IsLoadBusy = false;
this.Attend = new MyModel
{
AddressDetail = "asdasdasda",
Created = DateTime.Now,
Activity = "sadasdasdasfacf",
Note = "asuuusfasfa"
};
}
}
public class MyModel
{
public string AddressDetail { get; set; }
public DateTime Created { get; set; }
public string Activity { get; set; }
public string Note { get; set; }
}
И код в Xaml
такой же, как у вас. Убедитесь, что вы правильно установилиbindingContext
и позвони PerformShimmerAsyncTask
правильно.
Я загрузил сюда свой образец проекта. Сообщите мне, работает ли это для вас.