我有一个Xamarin.Forms.View的CustomRenderer,目前实现为Android.Views.View。我正在使用OnElementChanged来设置元素,这非常有用。
我使用Pop / Push机制导航到新页面并稍后返回。 CurrentView是新的(和当前的)Xamarin.Forms.View推入堆栈。
mainPage = new MainPage {Content = CurrentView};
app.MainPage = new NavigationPage(mainPage);
Stack.Push(CurrentView);
因此,我将已经可视化的Xamarin.Forms.View临时存储在堆栈上,而它不是屏幕上任何页面的一部分,只有堆栈上最顶层的视图可见。我想重用这个精确的View(以及现有的原生Android.Views.View挂件),但是当我再次将它添加到页面时,它被视为OnElementChanged中的一个新元素(e.NewElement已设置且this.Control为null),即使我是通过自定义渲染器中的SetNativeControl设置的。
OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.View> e)
{
if ( this.Control == null && e.NewElement != null )
{
//always lands in here => regarded as a new element
//create view
var nativeControl = ...
this.SetNativeControl(nativeControl);
}
}
有没有人有过将本机吊坠重用于Xamarin.Forms.View的经验?