Xamarin ImageButton становится невидимым после нажатия - PullRequest
0 голосов
/ 28 января 2019

У меня есть кнопка с изображением, которая, когда я нажимаю, хочу изменить ее Источник (пустая звезда на заполненную) для оценок.

Мой XAML:

            <StackLayout Grid.Row="1" Orientation="Horizontal" Spacing="0">
                <ImageButton Source="star_empty.png"
                             HeightRequest="40"
                             WidthRequest="40" 
                             VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
                              x:Name="star1"
                             BackgroundColor="Transparent"
                              Clicked="ImageButton_Clicked"/>



                <ImageButton Source="star_empty.png"
                             HeightRequest="40"
                             WidthRequest="40" 
                             VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
                             x:Name="star2"
                             BackgroundColor="Transparent"
                             Clicked="ImageButton_Clicked2"
                             />


                <ImageButton Source="star_empty.png"
                             HeightRequest="40"
                             WidthRequest="40"
                             VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
                             x:Name="star3"
                             BackgroundColor="Transparent"
                              Clicked="ImageButton_Clicked3" />


                <ImageButton Source="star_empty.png"
                             HeightRequest="40"
                             WidthRequest="40" 
                             x:Name="star4"
                             VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
                             BackgroundColor="Transparent"
                              Clicked="ImageButton_Clicked4"/>


                    <ImageButton Source="star_empty.png"
                             HeightRequest="40"
                             WidthRequest="40" 
                              x:Name="star5"
                             VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
                             BackgroundColor="Transparent"
                            Clicked="ImageButton_Clicked5"
                             />

                </StackLayout>

Посмотреть класс:

   private void ImageButton_Clicked(object sender, EventArgs e)
    {
        star1.Source = "star_full.png";
        int rating = 1;
    }

В чем может быть проблема?Источник действительно меняется, он просто мигает, затем становится невидимым.Я установил для свойства isVisible значение true, это не помогает.

1 Ответ

0 голосов
/ 28 января 2019

Определите тип ImageSource, который вы используете;файл, ресурс, uri, поток:

Пример:

star1.Source = ImageSource.FromResource("star_full.png");

Обновление:

<StackLayout Grid.Row="1" Orientation="Horizontal" Spacing="0">
        <ImageButton x:Name="star1" Source="star_off.png" BackgroundColor="Transparent" Clicked="ImageButton_Clicked"/>
        <ImageButton x:Name="star2" Source="star_off.png" BackgroundColor="Transparent" Clicked="ImageButton_Clicked"/>
        <ImageButton x:Name="star3" Source="star_off.png" BackgroundColor="Transparent" Clicked="ImageButton_Clicked"/>
        <ImageButton x:Name="star4" Source="star_off.png" BackgroundColor="Transparent" Clicked="ImageButton_Clicked"/>
        <ImageButton x:Name="star5" Source="star_off.png" BackgroundColor="Transparent" Clicked="ImageButton_Clicked"/>
</StackLayout>        

Код позади:

void ImageButton_Clicked(object sender, System.EventArgs e)
{
    (sender as ImageButton).Source = ImageSource.FromFile("star_on.png");
}

enter image description here

...