Xamarin.Forms入门困扰与解决方式-第二篇
一般項目中的按鈕都是用圖做得美美的(不會像第一篇中的按鈕),但是Xamarin.Forms中的Image控件默認是無法接受命令或觸碰事件的,WPF/Silverlight中可用Trigger讓控件侦听事件,但是在Xamarin中Trigger是不同的實現方式(沒有System.Windows.Interactivity.dll),另外用了TapGestureRecognizer來處理,本文延續第一篇的案例,演示由Button換成Image的解决方式
演示版本: Xamarin.Forms.1.3.1.6296(支援Unified API)
演示目标: 红框标识的控制项放在在ListView外面与里面(由分割线区分)的结果要一致
Xamarin.Forms中的Image無法像Button一樣使用(下列兩種方式是錯的)
<ImageCommand="{Binding CmdAdd}"CommandParameter="{Binding OneData}" />
<ImageClicked="OnClicked" />
正確方式是替Image添加TapGestureRecognizer寫法如下
<ImageSource="like.png">
<Image.GestureRecognizers>
<TapGestureRecognizerCommand="{Binding CmdAdd}"CommandParameter="{Binding OneData}" />
</Image.GestureRecognizers>
</Image>
如同第一篇,Image放到ListView內就出問題了(Xaml的逻辑不一致),所幸解法也與第一篇相同,改用Event的写法即可
這種方法還可以用在其他控件,例如Label
<LabelText="...">
<Label.GestureRecognizers>
<TapGestureRecognizerCommand="{Binding CmdAdd}"CommandParameter="{Binding OneData}" />
</Label.GestureRecognizers>
</Label>