XAML .NET MAUI Изменить Image.Source, добавленное по тригеру, при выборе элемента CollectionView
Есть CollectionView в которой, в зависимости от сработавшего тригера, выводится изображение. Необходимо у выбранного элемента коллекции, используя VisualStateManager, менять изображение на противоположное учитываю выбранную тему приложения. Например:
- если у элемента отображается изображение "pest_control_primary_dark.svg", то при выборе его необходимо заменить на
{AppThemeBinding Light=pest_control_primary_dark.svg, Dark=pest_control_primary.svg}
- если у элемента отображается изображение "question_mark_primary_dark.svg", то при выборе его необходимо заменить на
{AppThemeBinding Light=question_mark_primary_dark.svg, Dark=question_mark_primary.svg}
<CollectionView x:Name="supportList" Grid.Row="1" EmptyView="Новостей пока нет..." ItemsSource="{Binding AppSupportReportList}"
HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
SelectionMode="Single">
<CollectionView.ItemsLayout>
<GridItemsLayout Span="1" Orientation="Vertical" VerticalItemSpacing="10" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Border Stroke="{StaticResource PrimaryDark}" StrokeThickness="2"
BackgroundColor="Transparent" HeightRequest="80" Padding="10">
<Border.StrokeShape >
<RoundRectangle CornerRadius="15" />
</Border.StrokeShape>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="CommonStates">
<VisualState Name="Normal" />
<VisualState Name="Selected">
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource PrimaryDark}}" />
<Setter Property="Stroke" Value="{AppThemeBinding Light={StaticResource PrimaryDark}, Dark={StaticResource Primary}}" />
<Setter TargetName="Group" Property="Label.TextColor"
Value="{AppThemeBinding Light={StaticResource PrimaryDark}, Dark={StaticResource Primary}}" />
<Setter TargetName="Status" Property="Label.TextColor"
Value="{AppThemeBinding Light={StaticResource PrimaryDark}, Dark={StaticResource Primary}}" />
<Setter TargetName="DateOfEvent" Property="Label.TextColor"
Value="{AppThemeBinding Light={StaticResource PrimaryDark}, Dark={StaticResource Primary}}" />
<Setter TargetName="Image" Property="Image.Source" Value="{AppThemeBinding Light=other_admission_primary_dark.svg, Dark=other_admission_primary.svg}" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,*,Auto">
<Image Grid.Column="0" Grid.RowSpan="3" x:Name="Image" WidthRequest="70" HeightRequest="70" HorizontalOptions="Start" Margin="0,0,10,0">
<Image.Triggers>
<DataTrigger TargetType="Image"
Binding="{Binding Source={x:Reference Group}, Path=Text}" Value="Ошибка приложения">
<Setter Property="Source" Value="pest_control_primary_dark.svg" />
</DataTrigger>
<DataTrigger TargetType="Image"
Binding="{Binding Source={x:Reference Group}, Path=Text}" Value="Вопрос о приложении">
<Setter Property="Source" Value="question_mark_primary_dark.svg" />
</DataTrigger>
<DataTrigger TargetType="Image"
Binding="{Binding Source={x:Reference Group}, Path=Text}" Value="Предложить идею">
<Setter Property="Source" Value="emoji_objects_primary_dark.svg" />
</DataTrigger>
<DataTrigger TargetType="Image"
Binding="{Binding Source={x:Reference Group}, Path=Text}" Value="Другая">
<Setter Property="Source" Value="other_admission_primary_dark.svg" />
</DataTrigger>
</Image.Triggers>
</Image>
<Label Grid.Column="1" Grid.Row="0" x:Name="Group" Text="{Binding Group}" FontFamily="MontserratBold"
TextColor="{StaticResource PrimaryDark}" HorizontalTextAlignment="Start" LineBreakMode="TailTruncation" />
<FlexLayout Grid.Column="1" Grid.Row="2" Direction="Row" JustifyContent="SpaceBetween">
<Label x:Name="Status" Text="{Binding Status}" FontFamily="MontserratBold" TextTransform="Uppercase"
TextColor="{StaticResource PrimaryDark}" />
<Label x:Name="DateOfEvent" Text="{Binding DateOfEvent, StringFormat='{0:dd.MM.yyyy HH:mm:ss}'}" FontFamily="MontserratRegular"
TextColor="{StaticResource PrimaryDark}" HorizontalTextAlignment="End" />
</FlexLayout>
</Grid>
</Border>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>