Xamarin.Forms绑定问题-最后一个按钮命令不起作用

问题描述 投票:0回答:1

我在执行iOS上的最后一个按钮时遇到问题。

如果选择了列表中的元素,例如单击“第三项”,然后在“按钮2”上进行制表,该命令将不会在iOS上执行。在Android上会显示该消息。

[将ItemDetailPage包裹在NavigationPage中时出现问题。但是对于实际的应用程序,此导航页面是必需的,因此导航服务可以正常工作。

Source code for example app on GitHub

    async void OnItemSelected(object sender, EventArgs args)
    {
        var layout = (BindableObject)sender;
        var item = (Item)layout.BindingContext;
        // Causes issue
        await Navigation.PushAsync(new NavigationPage(new ItemDetailPage(new ItemDetailViewModel(item))));
        // No issue
        // await Navigation.PushAsync(new ItemDetailPage(new ItemDetailViewModel(item)));
    }
xamarin.forms xamarin.ios xamarin.ios-binding
1个回答
0
投票

由于您已经将ItemsPage设置为导航页面,所以不必再次将ItemDetailPage设置为导航页面。如果执行此操作,则页面中将有两个导航栏。

 <NavigationPage Title="Browse">
            <NavigationPage.Icon>
                <OnPlatform x:TypeArguments="FileImageSource">
                    <On Platform="iOS" Value="tab_feed.png"/>
                </OnPlatform>
            </NavigationPage.Icon>
            <x:Arguments>
                <views:ItemsPage />
            </x:Arguments>
        </NavigationPage>

并且在您的情况下,问题是由布局引起的。当页面在iOS中具有两个导航栏时,第二个按钮的框将超出屏幕区域。因此,即使命令在屏幕上正常显示,也永远不会被调用。如果删除第四行和ListView,第二个按钮将再次可单击。

最好的解决方案(或正确的解决方案)就是您所做的。

© www.soinside.com 2019 - 2024. All rights reserved.