Нужно ли делать что-то конкретное, чтобы основной элемент панели инструментов отображался отключенным на Android? - PullRequest
0 голосов
/ 02 мая 2018

У меня есть следующий 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 объекты, Edit и Save, правильно отображаются отключенными, когда связанный объект команды canExecute возвращает false, а когда он возвращает true, отображается как включенный. Это то же самое для двух двух дополнительных ToolbarItem объектов, Delete и Copy, во вторичном меню.

Когда я выполняю тестирование на 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...