Условно установить изображение на кнопке в Xamarin Forms - PullRequest
0 голосов
/ 31 августа 2018

Можно условно отобразить изображение на кнопке в формах Xamarin, в динамически заполненном ListView?

Например, чтобы подвести итог, у меня есть кнопка сердца, которую нужно заполнить красным, если условие в коде верно, но в остальном не красным.

<ListView x:Name="FullNamesList"
                      VerticalOptions="FillAndExpand"
                      ItemSelected="FullNamesList_OnItemSelected">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="1.1*" />
                                    <ColumnDefinition Width=".3*" />
                                </Grid.ColumnDefinitions>
                                <Label FontSize="Medium"
                                       FontAttributes="Bold"
                                       HorizontalTextAlignment="Start"
                                       Margin="20,0,0,0"
                                       VerticalTextAlignment="Center"
                                       Grid.Row="0"
                                       Grid.Column="0">
                                    <Label.Triggers>
                                        <DataTrigger TargetType="Label" Binding="{Binding Gender}" Value="F">
                                            <Setter Property="Text" Value="{Binding Name}" />
                                            <Setter Property="TextColor" Value="#cc0066" />
                                        </DataTrigger>
                                        <DataTrigger TargetType="Label" Binding="{Binding Gender}" Value="M">
                                            <Setter Property="Text" Value="{Binding Name}" />
                                            <Setter Property="TextColor" Value="#007acc" />
                                        </DataTrigger>
                                        <DataTrigger TargetType="Label" Binding="{Binding Gender}" Value="A">
                                            <Setter Property="Text" Value="{Binding Name}" />
                                            <Setter Property="TextColor" Value="#00994d" />
                                        </DataTrigger>
                                    </Label.Triggers>
                                </Label>
                                <Label Text="{Binding ShortMeaning}"
                                       FontSize="Small"
                                       TextColor="Gray"
                                       VerticalTextAlignment="Center"
                                       Grid.Row="0"
                                       Grid.Column="1" />

                                <Button Image="favorite.png"
                                       Grid.Row="0"
                                       Grid.Column="2"
                                       Scale=".9" 
                                       Opacity=".3"
                                       ClassId="{Binding Name}"
                                       Clicked="FavoriteHeart_OnClicked"
                                       x:Name="favoriteHeart">

                                </Button>
                            </Grid>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

Когда страница изначально создается, я буду перебирать список. Если имя присутствует в списке, мне нужно, чтобы изображение было изменено на Button Image="favoritered.png"

1 Ответ

0 голосов
/ 31 августа 2018

Вам необходимо заменить Button Image="Favorite.png" для привязки.

<Button Image="{Binding FavoriteImage}"
           Grid.Row="0"
           Grid.Column="2"
           Scale=".9" 
           Opacity=".3"
           ClassId="{Binding Name}"
           Clicked="FavoriteHeart_OnClicked"
           x:Name="favoriteHeart">

Затем в каком-то месте вашей ViewModel:

Объявите FavoriteImage Binding и после этого установите значение этой переменной

foreach(element in list){
    if(!string.isEmpty(element.NameVariable)){
        FavoriteImage = "favoriteded.png";
    }else{
        FavoriteImage = "favorite.png";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...