Merhabalar, bu yazımda Xamarin Forms üzerinde TapGestureRecognizer ve Command kullanımından bahsetmek istiyorum. Command nesnesi daha çok Xamarin Forms ile MVVM tasarım deseni kullanılırken kullanılan bir nesnedir(?).
Xamarin Forms MVVM kullanırken Xaml tarafında Binding işlemleri yaparız. Bu binding işlemleri daha çok veri bağlama şeklinde olsa da bazı durumlarda Command nesnelerini de bağlamak gerekebilir. Örneğin bir Grid komponentine dokunulduğunda harekete geçen bir Command’a ihtiyacımız olabilir.
Xamarin Forms Command tanımlaması aşağıdaki gibi yapılabilir.
public Command ListViewTappedCommand { get; set; }
<Grid>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ListViewTappedCommand}" />
</Grid.GestureRecognizers>
</Grid>
Yukarıdaki kullanımda TapGestureRecognizer ile Command bir arada kullanılmıştır. Görünüşte her hangi bir sorun olmasada grid komponentine dokunulduğunda ListViewTappedCommand çalışmayacaktır.
Sorunun çözümü ise oldukça basit ;
// Aşağıdaki gibi olan Command tanımlamasını değiştirmemiz gerekmektedir.
public Command ListViewTappedCommand { get; set; }
// Command yerine ICommand tipinde Command tanımlamamız yeterlidir.
public ICommand ListViewTappedCommand { get; set; }