【发布时间】:2017-12-03 11:37:24
【问题描述】:
我的自定义控件上有 2 个 TapGestureRecognizer:
1) 第一个是内部的/仅存在于自定义控件中。
2) 第二个附加在实例化自定义控件的页面上。
我正在使用第一个 TapGestureRecognizer 在内部/自定义控件内的 Tap 处触发动画,第二个 TapGestureRecognizer 用于跟踪页面上自定义控件上的 Taps,以便我可以对点击做出反应。
在页面“外部”/ 上做动画感觉不对,因为这个控件的每个实例都应该动画,这就是我在自定义控件中附加 TapGestureRecognizer 的原因。
但是,当我这样做时,只有“内部”的 TapGestureRecognizer 起作用,而外部的则不起作用。
这是正常行为吗?
public class clsGridCell : ContentView
{
var _Grid1ContainerForImageAndLabel = new Grid()
{
}
var nTapRec = new TapGestureRecognizer();
nTapRec.Tapped += OnItemSelected;
_Grid1ContainerForImageAndLabel.GestureRecognizers.Add(nTapRec);
this.Content = _Grid1ContainerForImageAndLabel;
}
private async void OnItemSelected(object sender, EventArgs e)
{
await Task.WhenAny<bool>
(
_image1.ScaleTo(0.9, 50, Easing.Linear)
);
//run some background color animation, too
}
和“外”/在页面上:
public class MainPage : ContentPage
{
var nGridCell = new clsGridCell
{
ImageSource = nImgSrc,
BackgroundColor = Color.Blue;
};
_BigGrid.Children.Add(nGridCell);
var nTapRec = new TapGestureRecognizer();
nTapRec.Tapped += OnItemSelected;
nGridCell.GestureRecognizers.Add(nTapRec);
private async void OnItemSelected(object sender, EventArgs e)
{
//Not fired! When I remove the "internal" TapGestureRecognizer, it does work
【问题讨论】:
标签: xamarin xamarin.forms