我正在创建一个自定义 Xamarin Forms 控件,其中在 View 内包含三个按钮 (1,2,3)。在本示例中,我们将其称为 GaugeView
。以下是当前的设置方式:
GuageView
在 iOS 和 Android 上都有一个名为GuageViewRenderer
的自定义渲染器。GuageView
公开Clicked1
、Clicked2
和Clicked3
的事件处理程序。GuageView
公开Click1
、Click2
和Click3
的ICommand
属性.
问题是,我需要从自定义渲染器触发事件处理程序,因为只有 native 平台控件知道何时按下其中一个按钮。如何将事件冒泡回 GuageView
(共享代码所在的位置)?
我计划在自定义渲染器内部连接命令和事件处理程序,但我用它很麻烦,因为事件只能从原始类中触发(GuageView
)。
有更好的方法来构建它吗?我想做的主要事情是公开平台 native 仪表并连接其按钮,以便共享代码 (GuageView
) 中的事件处理程序获得事件触发。
最佳答案
是的,您不能在声明事件的类之外引发事件。因此,您必须向 GaugeView
添加一个方法来引发事件。我也会用同样的方法调用命令。所以在 GaugeView
public void RaiseClick1() {
var clicked1 = Clicked1;
if (clicked1 != null)
clicked1(this, EventArgs.Empty);
if (Command1 != null && Command1.CanExecute(Command1Paramter))
Command1.Execute(Command1Parameter);
}
然后在 GaugeViewRender
中,每当您需要通知 View 单击了按钮时:
Element.RaiseClick1();
关于c# - Xamarin Forms 事件冒泡和调用自定义渲染器上的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31906996/