Хорошо, тогда ваш FlowItemsSource равен Binded
для вашего ObservableCollection<Category>
или любого типа объекта модели, который вы используете. Кнопка в вашем шаблоне данных привязана к свойству Name вашего класса Category
.
Назначьте триггер для вашей кнопки следующим образом, а затем при нажатии кнопки установите свойство в объекте модели на true / false в зависимости от текущего состояния.
<Button
Text="{Binding Name}"
TextColor="White"
Command="{Binding ToggleCommand}"
ContentLayout="Top"
BackgroundColor="Transparent"
BorderColor="White"
BorderWidth="2"
CornerRadius="6"
Margin="5,5,5,10" >
<Button.Triggers>
<DataTrigger
TargetType="Button"
Binding="{Binding IsToggled}"
Value="True">
<Setter Property="BackgroundColor" Value="Blue" />
</DataTrigger>
</Button.Triggers>
</Button>
Также, как показано выше, я бы предложил добавить свойство ICommand
в ваш класс Category, чтобы выполнить изменение свойства bool.
Команда / код для объекта модели Категория будет выглядеть так:
//Constructor
public Category()
{
ToggleCommand = new Command(() =>
{
IsToggled = !IsToggled;
NotifyPropertyChanged(nameof(IsToggled));
};
}
public ICommand ToggleCommand { get; }
public bool IsToggled { get; set; }
Затем, когда ваше состояние будет переключено на true , кнопка изменит цвет на синий, а затем, когда false , вернется к исходному прозрачному значению.
Также убедитесь, что класс Category реализует INotifyPropertyChanged