将地图添加到主详细信息页面返回异常

时间:2017-04-04 13:31:16

标签: xaml xamarin xamarin.forms

我正在使用xamarin表单(PCL)并使用Windows手机模拟器执行应用程序 我创建了一个主详细信息页面

<MasterDetailPage.Master>
    <ContentPage Title="Menu">
      <StackLayout Orientation="Vertical">
        <Button Text="buttonOne"/>
        <Button Text="ButtonTwo"/>
        <Button Text="ButtonThree"/>
      </StackLayout>
    </ContentPage>
  </MasterDetailPage.Master>

  <MasterDetailPage.Detail>
    <NavigationPage>
      <x:Arguments>
          <local:MasterPage />
      </x:Arguments>
    </NavigationPage>
  </MasterDetailPage.Detail>

详情页面是

<StackLayout>
        <Label Text="Hello World"/>
        <StackLayout>
            <maps:Map  WidthRequest="320" HeightRequest="200" />
        </StackLayout>
 </StackLayout>

停在

#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
            UnhandledException += (sender, e) =>
            {
                if (global::System.Diagnostics.Debugger.IsAttached) 
                 global::System.Diagnostics.Debugger.Break();
            };
#endif

并返回此异常(Native View =无法评估表达式。操作不受支持。未知错误:0x80070057。)

注意:

  1. 如果我删除了地图的WidthRequest和HeightRequest,它就可以了 但地图不会出现。
  2. 此异常仅在导航到主控时才会发生 详情页面。

1 个答案:

答案 0 :(得分:2)

因此,这解决了没有专门针对地图部分的问题,但导致导航到主详细信息页面的问题,因为PushModalAsync(...)将主详细信息页放在 new 之上导航堆栈而不是将其推到当前导航堆栈的顶部,这是PushAsync(...)所做的。

这是一个Xamarin Forms论坛问题的链接,似乎有同样的问题:

https://forums.xamarin.com/discussion/21461/navigation-pushasync-not-working

显然MasterDetail页面不喜欢被导航,Android和iOS都喜欢将它作为根页面。这并不是说这是不可能做到的,我相信它必须以不同的方式完成。一些依赖注入/自定义渲染可能在这里有所帮助。

我发现这个Xamarin Forms文章在学习导航时非常有用,也可以帮助你:

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/navigation/hierarchical/