Вы можете достичь этого следующим образом. Кросс-платформенным способом.
Добавьте эти свойства в вашу модель.
public class Argomenti : INotifyPropertyChanged
{
public string Capitolo
{
get;
set;
}
public string Descrizione
{
get;
set;
}
public event PropertyChangedEventHandler PropertyChanged;
private Color _backgroundColor;
public Color BackgroundColor
{
get { return _backgroundColor; }
set
{
_backgroundColor = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("BackgroundColor"));
}
}
}
public void SetColors(bool isSelected)
{
if (isSelected)
{
BackgroundColor = Color.FromRgb(0.20, 0.20, 1.0);
}
else
{
BackgroundColor = Color.FromRgb(0.95, 0.95, 0.95);
}
}
}
argomentilist_ItemTapped
метод.
private void argomentilist_ItemTapped(object sender, ItemTappedEventArgs e)
{
var selectedItem = e.Item as Argomenti;
selectedItem.SetColors(true);
}
Код макета.
<StackLayout>
<!-- Place new controls here -->
<StackLayout Margin="10,10,0,0">
<Label TextColor="Black" Text="Selezionare l'argomento" FontAttributes="Italic"></Label>
<ListView ItemTapped="argomentilist_ItemTapped" x:Name="argomentilist">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell >
<StackLayout Orientation="Vertical" BackgroundColor="{Binding BackgroundColor}" >
<Label Text="{Binding Capitolo}" Font="18" TextColor="Black"></Label>
<Label Text="{Binding Descrizione}" Font="14" TextColor="Gray"></Label>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</StackLayout>
======= Обновление ============== Пожалуйста, измените Argomenti
как следующий код.
открытый класс Argomenti: INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public string Capitolo
{
get;
set;
}
public string Descrizione
{
get;
set;
}
Color _backgroundColor;
public Color BackgroundColor
{
get { return _backgroundColor; }
set
{
_backgroundColor = value;
OnPropertyChanged("BackgroundColor");
}
}
public void SetColors(bool isSelected)
{
if (isSelected)
{
BackgroundColor = Color.FromRgb(0.20, 0.20, 1.0);
}
else
{
BackgroundColor = Color.FromRgb(0.95, 0.95, 0.95);
}
}
}