2016-11-13 65 views
3

我有一个奇怪的异常,其中编译器告诉我指定的转换无效,即使我在做什么非常简单。Xamarin.Forms绑定指定的转换无效

我有一个绑定到ObservableCollection的ListView。而在我的Listview里面是一个带有网格的ViewCell。 Xamarin.Forms版本2.3.2.127

<ListView ItemsSource="{Binding GiftCollection}"> 
     <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
      <ViewCell.View> 
       <Grid> 
      <Grid.RowDefinitions> 
      <RowDefinition Height="20"/> 
      <RowDefinition Height="20"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="40"/> 
      </Grid.ColumnDefinitions> 

      <Label Grid.Row="0" Grid.Column="0" Text="{Binding GiftName}"/> 
      <Label Grid.Row="1" Grid.Column="0" Text="{Binding GiftDescription}"/> 
      <Image Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Source="{Binding GiftImage}"/> 
     </Grid> 
     </ViewCell.View> 
     </ViewCell> 
     </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

型号:

public class GiftModel { 

     public string GiftName { get; set; } 
     public string GiftDescription { get; set; } 
     public ImageSource GiftImage { get; set; } 
    } 

视图模型:

public class NextRoundViewModel : BaseViewModel { 

     public NextRoundViewModel(ApplicationModel applicationModel) { 
      ApplicationModel = applicationModel; 
      Initialize(); 
     } 

     public ApplicationModel ApplicationModel { get; set; } 
     public ObservableCollection<GiftModel> GiftCollection { get; set; } 
     public string CurrentRound => "Runde 2"; 

     private void Initialize() { 
      GiftCollection = new ObservableCollection<GiftModel> { 
       new GiftModel { 
        GiftName = "100 Punkte", 
        GiftDescription = "Test", 
        GiftImage = ImageSource.FromFile("Star.png"), 
       }, 
       new GiftModel { 
        GiftName = "200 Punkte", 
        GiftDescription = "Test", 
        GiftImage = ImageSource.FromFile("Star.png"), 
       }, 
       new GiftModel { 
        GiftName = "300 Punkte", 
        GiftDescription = "Test", 
        GiftImage = ImageSource.FromFile("Star.png"), 
       }, 
      }; 
     } 
    } 

所以我用尽一切,但如果我使用例如TextCell异常消失了。 System.InvalidCastException:指定的转换无效。这很奇怪,因为我不知道在哪里寻找Bug。

+0

其特异性结合导致了问题?什么是被绑定的财产的类型? – Jason

+0

只是图像正在工作。标签绑定到一个简单的字符串。如果我用TextCell替换标签,则异常消失。我需要使用标签:) –

+0

你绑定到CategoryName和Description,是你的模型中的那些? – Jason

回答

1

我也有这个问题,问题是与xaml。我在<DataTemplate>内部有一个<StackLayout>,您可以删除您的<Grid>,这应该可以解决问题。

你知道吗,你可以用一个<ImageCell>更换<Grid>

<ListView.ItemTemplate> 
    <DataTemplate> 
     <ImageCell 
      Text="{Binding GiftName}" 
      Detail="{Binding GiftDescription}" 
      ImageSource="{Binding GiftImage}" 
    </DataTemplate> 
</ListView.ItemTemplate>