Xamarin.Forms.Skeleton - Почему не отображается анимация и BackgroundColor плагина?

Я реализовал плагин Skeleton в своем приложении xamarin.form. Он отлично работает на моей странице списка. Затем я пробую это в моем элементе listView, анимация и скелет backgroundColor не работают. Функция работает нормально, и в моей сборке нет ошибок.

Вот что я пробовал:

мой макет xaml:

<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 правильно.

Я загрузил сюда свой образец проекта. Сообщите мне, работает ли это для вас.

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