Joe*_*ung 2 c# wpf xaml xamarin
我在Xamarin表单上制作自定义图像按钮.但是我的代码下面没有用.
运行时错误消息:
Position 26:34. Cannot assign property "buttonCallback": type mismatch between "System.String" and "XXX.CircleImageButton+ClickedDelegate"
Run Code Online (Sandbox Code Playgroud)
从xaml传递回调方法的正确方法是什么?你怎么称呼这种技术?
谢谢.
myxaml.xaml
<local:CircleImageButton buttonCallback="buttonCallback"...
Run Code Online (Sandbox Code Playgroud)
myxaml.xaml.cs
void buttonCallback()
{
...
}
Run Code Online (Sandbox Code Playgroud)
CircleImageButton.cs
using System;
using ImageCircle.Forms.Plugin.Abstractions;
using Xamarin.Forms;
namespace XXX
{
public class CircleImageButton : CircleImage
{
public delegate void ClickedDelegate();
public ClickedDelegate buttonCallback { set; get; }
public CircleImageButton ()
{
this.GestureRecognizers.Add (new TapGestureRecognizer{
Command = new Command(() => {
this.Opacity = 0.6;
this.FadeTo(1);
this.buttonCallback();
})
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
只需将您的代码更改为:
public event ClickedDelegate buttonCallback;
Run Code Online (Sandbox Code Playgroud)
对于自定义事件,我将使用此结构:
MyBarElement
Decalaration
public event EventHandler FooHappend;
Run Code Online (Sandbox Code Playgroud)
调用
FooHappend?.Invoke(this, EventArgs.Empty);
Run Code Online (Sandbox Code Playgroud)
页
然后你可以使用
<MyBarElement FooHappend="OnFooHappend"></MyBarElement>
Run Code Online (Sandbox Code Playgroud)
在你的代码背后
private void OnFooHappend(object sender, EventArgs eventArgs)
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |