質問: ### 前提・実現したいこと 複数のImageを配置しタップしたら選択され、他のImageがタップされたら最初にタップされたImageは選択が解除され、新しくタップされたものが選択されるというImageでラジオボタンのような機能を作りたいです。 やり方が分かる方教えてください。 よろしくお願いします。 ### 試したこと 選択されたことが視覚的に確認できる方法としてタップされたら画像を変更するという方法を考え実行しましたが変更した画像を戻す方法が分かりませんでした。 ![タップ処理](https://teratail.storage.googleapis.com/uploads/contributed_images/9cd663ca54dc53e5286f6f3276cd398e.png) 別の効率よいやり方があればこの方法は無視していただいて構いません。 ### 補足情報(言語/FW/ツール等のバージョンなど) 開発環境 Visual Studio 2015 Windows 10 Xamarin.Forms.Portable
回答: こんな感じでしょうか。 !イメージ説明 それぞれの Image がタップされた時に、全ての画像を自力で更新すればよいのですが、 せっかく Xamarin.Forms なので、データバインディングとプロパティ変更通知を利用するのが後々にとってよいでしょう。 おおざっぱにやる事は5つ。 1. 選択しているボタンの Index を保持するモデルクラスを作り、それは `INotifyPropertyChanged` を実装する。 2. Index から ImageSource へ変換する ValueConverter を作る。これはモデルの Index と、後述のコマンドパラメータ値が一致したら選択中の画像を、不一致なら未選択の画像を返すものである。 3. 画面の XAML の BindingContext に 1. のモデルのインスタンスを設定する。 4. 並べた `Image` の `Source` プロパティに 1. の Index をバインドし、さらに 2. の ValueConverter を仕掛ける。コマンドパラメータには 1〜 の連番を指定する。 5. 各 Image がタップされたときの処理で、モデルクラスの Index に 1〜 を設定する。 サンプルを以下に作ってみましたので参考にしてみてください。 * amay077/RadioImageSample: Xamarin.Forms で、ラジオボタンのように Image の画像を On / Off するサンプル