Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms Forms:是否有一个事件指示自定义渲染器已执行?_Xamarin.forms_Custom Renderer - Fatal编程技术网

Xamarin.forms Forms:是否有一个事件指示自定义渲染器已执行?

Xamarin.forms Forms:是否有一个事件指示自定义渲染器已执行?,xamarin.forms,custom-renderer,Xamarin.forms,Custom Renderer,我试图解决开源Xamarin.Forms控件中的一个缺点,该控件使用自定义渲染器 问题是,我只能在自定义渲染器运行后在控件上设置某些属性。我只是不确定那是什么时候。控件或页面中是否存在任何生命周期事件,表明所有自定义呈现程序都已执行 谢谢大家! xxxRenderer类公开OnElementChanged方法,该方法在创建Xamarin.Forms控件以呈现相应的本机控件时调用。此方法采用包含OldElement和NewElement属性的ElementChangedEventArgs参数。这些

我试图解决开源Xamarin.Forms控件中的一个缺点,该控件使用自定义渲染器

问题是,我只能在自定义渲染器运行后在控件上设置某些属性。我只是不确定那是什么时候。控件或页面中是否存在任何生命周期事件,表明所有自定义呈现程序都已执行


谢谢大家!

xxxRenderer类公开OnElementChanged方法,该方法在创建Xamarin.Forms控件以呈现相应的本机控件时调用。此方法采用包含OldElement和NewElement属性的ElementChangedEventArgs参数。这些属性表示渲染器附加到的Xamarin.Forms元素和渲染器附加到的Xamarin.Forms元素

protected override void OnElementChanged (ElementChangedEventArgs<Entry> e)
{
  base.OnElementChanged (e);

  if (Control != null) {
     // custom renderers have executed here

  }
}

对基类的OnElementChanged方法的调用实例化一个本机controlor视图,并将对控件的引用分配给呈现器的控件属性

谢谢你的回复。不幸的是,我不拥有渲染器本身。如果可能的话,我真的希望避免将源代码分叉以进行定制。在Xamarin.Forms项目中,我知道自定义渲染器已经执行了吗?我们不知道自定义渲染器是否已经在表单中执行了。如果您不想将源代码用于定制,那么为什么还要再使用定制渲染器呢?我们使用它是因为我们想在特定的平台上做一些特殊的事情。如果你想知道,你可以使用messagingCenter。并在OnElementChanged中发送通知,并在表单中订阅。不幸的是,MessagingCenter似乎也无法工作。我正在查看的文件是从第50行开始的OnElementChanged,它立即调用base.OnElementChanged,从而触发事件。但我需要的是知道第89行执行后的某一点。如果没有这一行,我就无法设置Xamarin表单中SignaturePad的笔划。如果无法编辑渲染器,我认为您无法实现它。