问题描述
我在弄清楚如何从我的 XAML 而不是我的代码正确绑定自定义事件处理程序时遇到了一些困难。在我后面的代码中,我现在在我的父代码后面有这个:
this.stepBar.Callback = SetViewForStep;
这很好用,它会在我的自定义控件中正确设置回调事件处理程序,其定义如下:
public static readonly BindableProperty CallbackProperty = BindableProperty.Create(nameof(Callback),typeof(EventHandler),typeof(StepProgressBarControl),null);
public EventHandler Callback {
get {
return (EventHandler)GetValue(CallbackProperty);
} set {
SetValue(CallbackProperty,value);
}
}
但是,我希望能够像在按钮上定义 Click
事件一样,完全在 XAML 中定义它。
<StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
Padding="20" Spacing="20">
<customcontrols:StepProgressBarControl
StepColor="LightPink"
Steps="5"
Callback="SetViewForStep"
StepSelected="{Binding SelectedStep}" x:Name="stepBar" />
<Label
Text="{Binding SelectedStep,StringFormat='The Step Selected is {0}'}"
FontAttributes="Bold"
FontSize="Large"
HorizontalOptions="Center"
VerticalOptions="CenterandExpand" />
</StackLayout>
但是,如果我在 XAML 中定义它并尝试运行它,我会收到 Error XFC0009 No property,BindableProperty,or event found for "Callback",or mismatching type between value and property.
如何创建一个 EventHandler 以便我可以在我的 xaml.cs 中定义其函数,就像为按钮或任何其他具有公开 EventHandler 属性的内置控件定义单击事件的方式相同?