Looking for xamarin.forms Answers? Try Ask4KnowledgeBase
Looking for xamarin.forms Keywords? Try Ask4Keywords

Xamarin.Formsデータバインディング


備考

考えられる例外

System.ArrayTypeMismatchException:配列と互換性のない型として要素にアクセスしようとしました。

この例外は、XAMLの事前コンパイルが有効な場合に、バインド不可能なプロパティにコレクションをバインドしようとしたときに発生する可能性があります。一般的な例は、 Picker.ItemsにバインドしようとしていPicker.Items 。下記参照。

System.ArgumentException: 'Xamarin.Forms.Binding'型のオブジェクトを 'System.String'型に変換することはできません。

この例外は、XAMLの事前コンパイルが無効な場合に、バインド不可能なプロパティにコレクションをバインドしようとしたときに発生する可能性があります。一般的な例は、 Picker.ItemsにバインドしようとしていPicker.Items 。下記参照。

Picker.Itemsプロパティはバインドできません。

このコードはエラーを引き起こします:

<!-- BAD CODE: will cause an error -->
<Picker Items="{Binding MyViewModelItems}" SelectedIndex="0" />

例外は次のいずれかです。

System.ArrayTypeMismatchException:配列と互換性のない型として要素にアクセスしようとしました。

または

System.ArgumentException: 'Xamarin.Forms.Binding'型のオブジェクトを 'System.String'型に変換することはできません。

具体的には、 Itemsプロパティはバインドできません。ソリューションは、次のような、独自のカスタムコントロールを作成したり、サードパーティ製のコントロールを使用することを含むBindablePickerからFreshEssentials 。プロジェクトにFreshEssentials NuGetパッケージをインストールすると、バインド可能なItemsSourceプロパティを持つパッケージのBindablePickerコントロールを使用できます。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:fe="clr-namespace:FreshEssentials;assembly=FreshEssentials"
             xmlns:my="clr-namespace:MyAssembly;assembly=MyAssembly"
             x:Class="MyNamespace.MyPage">
  <ContentPage.BindingContext>
    <my:MyViewModel />
  </ContentPage.BindingContext>
  <ContentPage.Content>
    <fe:BindablePicker ItemsSource="{Binding MyViewModelItems}" SelectedIndex="0" />
  </ContentPage.Content>
</ContentPage>

データバインディング 関連する例