Xamarin.Forms:为什么MasterDetailPage.IsPresentedChanged在Android上提升了三次?

时间:2014-10-10 12:19:33

标签: android events xamarin xamarin.forms

我有一个使用Xamarin.Forms(版本1.2.3)和MasterDetailPage(类似于:" Show "Back to Menu" Button in iOS NavigationBar with Xamarin.Forms")的应用程序的以下最小示例:

public static class App
{
    static MasterDetailPage MDPage;

    public static Page GetMainPage()
    {
        MDPage = new MasterDetailPage {
            Master = new ContentPage {
                Title = "Master",
                Icon = Device.OS == TargetPlatform.iOS ? "menu.png" : null,
                Content = new Button {
                    Text = "Open detail",
                    Command = new Command(o => {
                        MDPage.Detail = new NavigationPage(new ContentPage());
                        MDPage.IsPresented = false;
                    }),
                },
            },
            Detail = new NavigationPage(new ContentPage()),
        };
        MDPage.IsPresentedChanged += (sender, e) => Console.WriteLine(DateTime.Now + ": " + MDPage.IsPresented);
        return MDPage;
    }
}

(hosted on GitHub)

Android 上通过按钮点击打开或关闭MasterPage时,IsPresentedChanged事件会被触发三次而不是一次。根据命令行输出,IsPresented属性切换为True - False - TrueFalse - True - {{1分别。

使用滑动手势或点击False打开或关闭效果很好。在iOS上完全没有问题。

我做错了吗?或者有一个简单的解决方法来获得可靠的事件吗?

1 个答案:

答案 0 :(得分:0)

好的,使用Xamarin.Forms的当前版本1.4.0,问题似乎已得到解决。打开滑出菜单只产生一个" True",关闭它会产生" False" - 正如预期的那样。