2017-07-10 10 views
0

xamarin.formsアプリケーション用に、observableコレクションに要素を追加しようとするときに問題が発生します。ここでは、コードの例です:Xamarin.FormsアプリケーションでObservableCollectionに要素を追加しようとするとInvalidCastExceptionが発生する

public partial class ItemListPage : ContentPage 
{ 

    public ObservableCollection<string> Elements { get; set; } = new ObservableCollection<string>(); 

    public ItemListPage() 
    { 
     InitializeComponent(); 
     ElementsView.ItemsSource = Elements; 
    } 

    public async void OnAddButtonClicked() 
    { 
     string result = await GetCodeAsync(); 
     if (result != null) 
     { 
      try 
      { 
       Elements.Add(result); 
      }catch(Exception exc) 
      { 
       throw exc; 
      } 
     } 

    }}` 

そしてここで、私のXAMLコードの例があります:

<ListView x:Name="ElementsView"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <StackLayout> 
         <Label Text="PlaceHolderText" /> 
         </StackLayout> 
        </StackLayout> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

トライキャッチセクションから、私はInvalidCastExceptionが取得するが、私はしないでください理由を知っている!何か不足していますか? obsrvableコレクションの要素は、特定のインタフェースを実装する必要がありますか?どうもありがとうございました!

+0

すべてがコード内で正しいようです。私はなぜそれが例外を与えているのか分からない。 – Ahmar

答えて

2

DataTemplate要素の子は、ViewCell型であるか、またはViewCell型から派生している必要があります。

<ListView.ItemTemplate> 
      <DataTemplate> 
       <ViewCell> 
        <StackLayout> 
         <Label Text="PlaceHolderText" /> 
        </StackLayout> 
       </ViewCell> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
関連する問題