WPF - Binding не является допустимым условием триггера

Есть две кнопки, назад и вперёд, которые взаимодействуют с массивом и изменяют индекс элемента, который надо достать из массива.

Пытаюсь сделать так, чтобы кнопка назад была недоступна, если выбран первый элемент массива, а кнопка вперед была недоступна, если выбран последний элемент массива. Сначала хотел сделать два свойства (IsFirstElement, IsLastElement), сделать для кнопок триггеры и в коде уже проверять на первый и последний элемент, а затем менять значение свойств. Потом подумал, что можно просто сравнивать выбранный элемент с единицей (в случае кнопки назад) и с количеством элементов в массиве (в случае кнопки вперёд). Вот реализация кнопки назад:

<Button Content="Назад">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding PhotoIndex}" Value="1">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

Вот реализация кнопки вперед:

<Button Content="Вперед">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding PhotoIndex}" Value="{Binding PhotoCount}">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

При биндинге PhotoCount к Value выдает ошибку из шапки темы. Подскажите, можно ли как-то без дополнительных свойств реализовать мою задумку? Возможно необходимо использовать другие триггеры или какие-то дополнительные свойства? Заранее извиняюсь, если такой вопрос уже был, но ответа я не нашёл.


Ответы (1 шт):

Автор решения: NoNameUser

Реализовал не через триггеры, а по совету @EvgeniyZ через команды. Реализация выглядит так:

private RelayCommand nextPhotoCommand;
public RelayCommand NextPhotoCommand
{
    get
    {
        return nextPhotoCommand ??
             (nextPhotoCommand = new RelayCommand(x => {CurrentPhoto = Photos[++PhotoIndex];}, 
obj => {return (PhotoIndex != PhotoCount);}));
    }
 }

С помощью этого кода определяется возможность исполнения команды (CanExecute):

obj => {return (PhotoIndex != PhotoCount);}
→ Ссылка