如何解决如何绑定到 XAML 中的自定义事件处理程序
我在弄清楚如何从我的 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 属性的内置控件定义单击事件的方式相同?
解决方法
将 Callback
声明为 event
应该可以解决问题。
更改自定义控件中的代码,如下所示
public event EventHandler Callback;
这样当我们在 xaml 中输入 Callback
时,intellisense 帮助我们引用 page 中的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。