我是否需要执行任何特定的主要工具栏项在Android上显示为禁用

时间:2018-05-02 05:40:35

标签: android xaml xamarin.forms

我有以下XAML

<ContentPage.ToolbarItems>
    <ToolbarItem x:Name="tbiEdit" Text="Edit" Order="Primary" Priority="1" Command="{Binding ToggleEditCommand}">
        <ToolbarItem.Icon>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="Android" Value="ic_edit_white_24dp.png"/>
                <On Platform="UWP" Value="Assets/Icons/ic_edit_dark_48dp.png"/>
            </OnPlatform>
        </ToolbarItem.Icon>
    </ToolbarItem>
    <ToolbarItem x:Name="tbiSave" Text="Save" Order="Primary" Priority="2" Command="{Binding SaveOrderCommand}">
        <ToolbarItem.Icon>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="Android" Value="ic_save_white_24dp.png"/>
                <On Platform="UWP" Value="Assets/Icons/ic_save_dark_48dp.png"/>
            </OnPlatform>
        </ToolbarItem.Icon>
    </ToolbarItem>
    <ToolbarItem x:Name="tbiCopy" Text="Copy" Order="Secondary" Priority="3" Command="{Binding CopyOrderCommand}">
        <ToolbarItem.Icon>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="Android" Value="ic_content_copy_white_24dp.png"/>
                <On Platform="UWP" Value="Assets/Icons/ic_content_copy_dark_48dp.png"/>
            </OnPlatform>
        </ToolbarItem.Icon>
    </ToolbarItem>
    <ToolbarItem x:Name="tbiDelete" Text="Delete" Order="Secondary" Priority="4" Command="{Binding DeleteOrderCommand}">
        <ToolbarItem.Icon>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="Android" Value="ic_delete_white_24dp.png"/>
                <On Platform="UWP" Value="Assets/Icons/ic_delete_dark_48dp.png"/>
            </OnPlatform>
        </ToolbarItem.Icon>
    </ToolbarItem>
</ContentPage.ToolbarItems>

在UWP上进行测试时,当绑定命令对象的ToolbarItem返回canExecute时,以及返回false时,主要true对象(编辑和保存)会正确显示为禁用状态},显示为已启用。对于辅助菜单中的两个辅助ToolbarItem对象(删除和复制),这是相同的。

当我部署到我的Samsung Note8进行测试时,编辑和保存始终显示为启用状态。复制和删除在二级菜单中按预期显示。编辑和保存实际上并不执行操作,它只是外观。 我根本不熟悉Android,并且在这方面严重依赖于Xamarin.Forms,所以我想知道是否有一些我需要在Android方面专门做的事情才能拥有启用/禁用的外观根据绑定命令的canExecute功能?

编辑(添加代码): 根据要求,保存和编辑命令代码。

private bool CanSave()
    {
        if (!IsVMInEditMode) return false;
        if (!DisplaySaveWarning) return false;
        if (string.IsNullOrWhiteSpace(Title)) return false;
        if (string.IsNullOrWhiteSpace(Details)) return false;
        if (Title.Length > 50) return false;
        if (Details.Length > 1000) return false;
        return true;
    }

private bool CanToggleEdit()
    {
        if (_order == null) return false;
        if (!_order.IsUserCreated) return false;
        return true;
    }

0 个答案:

没有答案