У меня есть следующий 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;
}