0
工作在Xamarin.Forms
,在PCL,我有自定义控制,自定义事件:自定义事件处理程序中Xamarin.Forms不会在XAML
public class TestGrid : Grid
{
public EventHandler OnTapped;
public TestGrid()
{
var tgr = new TapGestureRecognizer { NumberOfTapsRequired = 1 };
tgr.Tapped += Tgr_Tapped;
this.GestureRecognizers.Add(tgr);
}
private void Tgr_Tapped(object sender, EventArgs e)
{
OnTapped?.Invoke(sender, e);
}
}
在我的起始页
我:
public partial class StartPage : ContentPage
{
public StartPage()
{
InitializeComponent();
BindingContext = new StartPageViewModel();
MainGrid.OnTapped += OnGridTapped;
}
private void OnGridTapped(object sender, EventArgs e)
{
Debug.WriteLine("Tapped!");
}
}
我的XAML看起来像这样,它的工作原理:
<v:TestGrid x:Name="MainGrid" />
但是!
当我删除MainGrid.OnTapped += OnGridTapped;
和XAML添加事件,在这里:
<v:TestGrid x:Name="MainGrid" OnTapped="OnGridTapped">
我好好尝试的工作。它说..没有找到OnTapped事件:
未处理的异常:
Xamarin.Forms.Xaml.XamlParseException:位置6:33。没有 的名字OnTapped发现
我的问题是:为什么?有什么区别?
的OnTapped你在代码中声明的是不是一个*物业* - 它没有一个getter/setter方法。这只是课堂级别的变量。 – Jason
添加getter和setter并使其成为属性无效:/ –