微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Forms UWP 中,自定义标题视图中带有内容视图的后退导航无法与自定义渲染器一起正常工作 说明重现步骤预期行为实际行为截图解决方法

如何解决在 Forms UWP 中,自定义标题视图中带有内容视图的后退导航无法与自定义渲染器一起正常工作 说明重现步骤预期行为实际行为截图解决方法

说明

当为内容视图使用自定义渲染器时。它在使用内容控件将内容视图的内容转换为内容展示器时抛出“元素已经是另一个元素的子元素”。

重现步骤

  1. 运行附加的示例。
  2. 导航到子页面并返回。
  3. 内容视图被隐藏,页面无法正确导航回来。
  4. 自定义渲染器的 on element changed 方法中抛出异常。

预期行为

页面应该像第二次一样正确导航回内容视图。

实际行为

第一次页面没有正确导航回来,内容视图也消失了。

截图

image

image

解决方法

请检查以下示例。 CustomControl.zip

谁能帮我解决这个问题?

解决方法

元素已经是另一个元素的子元素"

问题是你的 CustomView 已经被之前的视图引用了,当你导航回来的时候,导航创建了新的 ContentPage 想要使用之前的 CustomView,但是之前的 CustomView 还没有被释放。为了解决这个问题,你可以在页面TitleViewProperty时将OnDisappearing设置为null。

protected override void OnDisappearing()
{
    base.OnDisappearing();
    SetValue(NavigationPage.TitleViewProperty,null);
}

更新

请在 OnAppearing 方法中设置 TitleViewProperty,如下所示。

protected override void OnAppearing()
{
    base.OnAppearing();
    SetValue(NavigationPage.TitleViewProperty,new NavigationView());
}

protected override void OnDisappearing()
{
    base.OnDisappearing();
    SetValue(NavigationPage.TitleViewProperty,null);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。