2017-01-19 56 views
1

Xamarinフォームのドキュメントhttps://developer.xamarin.com/api/property/Xamarin.Forms.Picker.SelectedItem/には、Picker用のPublicItem SelectedItemがあります。しかし、私はそれにバインドしようとするとエラーが発生します。 SelectedIndexプロパティを手動で処理する必要がある場合、ピッカーはそれほど役に立ちません。XamarinフォームピッカーSelectedItemバインディング

トニー

+0

使用しているXamarin.Formsのバージョンはどれですか?バインド可能なピッカーは[2.3.4のみ]にあります(https://blog.xamarin.com/new-xamarin-forms-pre-release-2-3-4-pre1-quality-improvements-bindable-picker/) –

+1

Make 'SelectedItem'へのバインドに使用されるVMプロパティのタイプが' ItemsSource'コレクションで使用されるタイプのものと同じであることを確認してください。 – Ada

答えて

2

あなたも、箱から出して、それをサポートしているフォームの古いバージョンの事前2.3.4で、比較的簡単にこの機能を追加することができます。ピッカーアイテムをバインドするカスタムbehaviourを作成するだけです。あなたは、詳細なdocumentationはそれを使用する方法を示し

独自のバージョンを実装するか、sourceとして利用可能であるXamarin大学インフラストラクチャ・ライブラリなどの既存のライブラリを使用してNuget

のようにすることができます

<Picker ...> 
    <Picker.Behaviors> 
     <inf:PickerBindBehavior Items="{Binding Colors}" 
          SelectedItem="{Binding FavoriteColor}" /> 
    </Picker.Behaviors> 
</Picker> 

ビヘイビアのアプローチは、バインド可能なプロパティ(項目)を公開し、観察可能なコレクションを使用することです。その変更が行われるたびに、動作によってピッカーの項目が更新されます。

0

SelectedIndexを手動で処理する必要はありません。 Pickers SelectedItemプロパティを使用できます。あなたのタイプが同じであることを確認してください。あなたのItemsSourceがプロパティにバインドされている場合たとえば、:ページが最初にあるときにタイトルを表示するSelectedBookTitle値を設定してください

SelectedBookTitle string { get; set; } 

BookTitles List<string> { get; set; } 

あなたのSelectedItemのようなものである必要があります表示されます。 SelectedItem BindingでModeをTwoWayに設定することを忘れないでください。例えば :

<Picker ItemsSource="{Binding BookTitles}" SelectedItem="{Binding 
SelectedBookTitle, Mode=TwoWay}" /> 

このページが最初に表示 とページと分離コード/のviewmodelに等しいSelectedBookTitleの値を保持しているときにタイトルが表示されていることを確認します。

この例ではビヘイビアを使用する必要はありません。

関連する問題