我想要顯示/隱藏一個依賴於ListView項的BindingContext的值的按鈕,所以我做了一個ValueConverter來將BindingContext轉換爲一個布爾值。由於某些原因,它不起作用,即使值爲null,按鈕也始終可見。Xamarin Button IsVisible綁定ValueConverter不起作用
編輯:當初始化轉換器返回正確的值,真/假但似乎沒有設置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控件本身它的價值
<ListView ItemsSource="{Binding MyItems}"
ItemTemplate="{StaticResource MyItemTemplate}"
RowHeight="50"
HeightRequest="155"
VerticalOptions="Start"
BackgroundColor="#209FAA9F"/>