Я хочу показать/скрыть кнопку в зависимости от значения BindingContext элемента ListView, поэтому я сделал ValueConverter для преобразования BindingContext в логическое значение. По какой-то причине он не работает, и кнопка всегда отображается, даже когда значение равно null.Xamarin Button IsVisible Связывание с ValueConverter не работает
EDIT: Когда инициализация преобразователя возвращает правильное значение, true/false, но IsVisible не установлен, кажется. При изменении элемента привязка привязана к методу Convert, не вызвана снова, это также кажется странным для меня, поскольку я хочу, чтобы он обновлялся всякий раз, когда объект, к которому он привязан, изменил значение.
Вот преобразователь:
public class NullToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value != null ? true : false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
//Not used.
throw new NotImplementedException();
}
}
А вот как я использую его в XAML:
<converters:NullToBoolConverter x:Key="objectToBool" />
<DataTemplate x:Key="MyItemTemplate">
<ViewCell>
<Grid ColumnSpacing="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<controls:ImageButton Grid.Column="0"
IsVisible="{Binding Path=., Converter={StaticResource objectToBool}}"
VerticalOptions="Start" HorizontalOptions="Center"
Image="ic_remove_circle_outline_black_24dp"
BackgroundColor="Transparent" />
</Grid>
</ViewCell>
</DataTemplate>
И сам списке следует за то, что он стоит
<ListView ItemsSource="{Binding MyItems}"
ItemTemplate="{StaticResource MyItemTemplate}"
RowHeight="50"
HeightRequest="155"
VerticalOptions="Start"
BackgroundColor="#209FAA9F"/>