|
<ContentPage.Resources>
<ResourceDictionary>
<local:SelectionBoolToImageConverter x:Key="BoolToImageConverter"/>
<local:SelectionBoolToBackgroundColorConverter x:Key="BoolToBackgroundColorConverter"/>
<local:SelectionBoolToTextColorConverter x:Key="BoolToTextColorConverter"/>
<DataTemplate x:Name="ItemTemplate" x:Key="ItemTemplate">
<Grid x:Name="grid" RowSpacing="0" ColumnSpacing="0"
BackgroundColor="{Binding Path=IsSelected, Converter={StaticResource BoolToBackgroundColorConverter}}">
…
<Grid Grid.Column="1"
RowSpacing="1"
Padding="10,0,0,0"
VerticalOptions="Center">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label LineBreakMode="NoWrap"
TextColor="{Binding Path=IsSelected, Converter={StaticResource BoolToTextColorConverter}}"
Text="{Binding SongTitle}"/>
…
</Grid>
</Grid>
<Image Grid.Column="2"
Source="{Binding Path=IsSelected, Converter={StaticResource BoolToImageConverter}}"/>
</Grid>
<StackLayout Grid.Row="1" BackgroundColor="#E4E4E4" HeightRequest="1"/>
</Grid>
</DataTemplate>
</ResourceDictionary>
</ContentPage.Resources> |
|
…
private void ListView_SelectionChanged(object sender, ItemSelectionChangedEventArgs e)
{
for (int i = 0; i < e.AddedItems.Count; i++)
{
var item = e.AddedItems[i];
(item as MusicInfo).IsSelected = true;
}
for (int i = 0; i < e.RemovedItems.Count; i++)
{
var item = e.RemovedItems[i];
(item as MusicInfo).IsSelected = false;
}
}
…
public class SelectionBoolToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value)
return ImageSource.FromResource("CustomSelection.Images.Selected.png");
else
return ImageSource.FromResource("CustomSelection.Images.NotSelected.png");
}
}
public class SelectionBoolToBackgroundColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value)
return Color.FromHex("#eceff4");
else
return Color.Transparent;
}
}
public class SelectionBoolToTextColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value)
return Color.FromHex("#731549");
else
return Color.FromHex("#65696F");
}
} |