【发布时间】:2021-12-09 23:55:48
【问题描述】:
我不想更改所选记录的背景颜色。我创建了转换器,但它标记的记录多于一个。我只需要选择一条记录并更改其中的背景颜色
颜色转换器
public class ColorElementSelectionConverter : ElementSelectionConverter<ColorResponseModel>
{
protected override bool Equals(ColorResponseModel selectedElement, ColorResponseModel currentElemnt)
{
return selectedElement.Id.Equals(currentElemnt.Id);
}
}
元素选择转换器
public abstract class ElementSelectionConverter<T> : IValueConverter where T: class
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var selectedElement = value as T;
if(selectedElement == null) return false;
var viewCell = parameter as ViewCell;
if(viewCell == null) return false;
var currentElemnt = viewCell.BindingContext as T;
if(currentElemnt == null) return false;
return Equals(selectedElement, currentElemnt);
}
protected virtual bool Equals(T selectedElement, T currentElemnt)
{
return selectedElement.Equals(currentElemnt);
}
查看
<ViewCell x:Name="ColorViewCell">
<Grid Margin="0,0,0,0" HeightRequest="36" VerticalOptions="Center">
<Grid.Triggers>
<DataTrigger TargetType="Grid"
Binding="{Binding Path=BindingContext.Color, Source={x:Reference Name=CarColorListPopup},Converter={StaticResource ColorElementSelectionConverter},
ConverterParameter={x:Reference Name=ColorViewCell}}" Value="true">
<Setter Property="BackgroundColor" Value="#388FEE" />
</DataTrigger>
【问题讨论】:
标签: xamarin xamarin.forms