2017-02-03 78 views
0

我想要顯示/隱藏一個依賴於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"/> 

回答