1

我有一个 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 临时存储在 Stack 上,而它不是屏幕上任何页面的一部分,只有 Stack 上的最顶层 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 的经验?

4

0 回答 0