http://www.buildinsider.net/mobile/xamarintips/0038
このサイトを参考にしてるが、ImageCellに対してクリックを付けたい。
以下のコードにOnClickをつけようと模索。
new Group("Woman") { new Data {Name = "Rhonda J. Bailey", Phone = "801-617-8209", Icon = "woman.png"}, new Data {Name = "Elizabeth E. McClellan", Phone = "415-771-0336", Icon = "woman.png"}, }
以下の部分を見る限りDataのプロパティと"Name"の文字列がマッピングしている。(文字列なのが気に入らないが・・)
var cell = new DataTemplate(typeof (ImageCell)); cell.SetBinding(ImageCell.TextProperty, "Name"); cell.SetBinding(ImageCell.DetailProperty, "Phone"); cell.SetBinding(ImageCell.ImageSourceProperty, "Icon");
CommandPropertyが怪しいと思い新たに
cell.SetBinding(ImageCell.CommandProperty, "OnClick");
のようにし、Data
クラスには
class Data { public String Name { get; set; } public String Phone { get; set; } public String Icon { get; set; } public Action OnClick { get; set; } // コレ追加 }
配列への追加時には、
ar.Add(new Data {Name = "Michael H. White", Phone = "620-625-0916", Icon = "man.png", OnClick = () => {System.Diagnostics.Debug.WriteLine("押されたよ");}));
とやれば、うまくいくと思ったが、ActionがSystem.Windows.Input
に変換できない警告が出ていた。
AndroidでやってるのでWindowsってのがなんかおかしいが、
[https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml- basics/data_bindings_to_mvvm/#Commanding_with_ViewModels]
を見て、 もしや!?と、
using System.Windows.Input; // コレ追加 class Data { public String Name { get; set; } public String Phone { get; set; } public String Icon { get; set; } public ICommand OnClick { get; set; } // こう変更 }
さらに以下のように
using Xamarin.Forms; // これはCommandに必須. // bla bla bla. ar.Add(new Data {Name = "Michael H. White", Phone = "620-625-0916", Icon = "man.png", OnClick = new Command(() => {System.Diagnostics.Debug.WriteLine("押されたよ");})
すると呼ばれた。