Вместо того, чтобы связывать две вещи со свойством, почему бы не привязать один элемент (то есть переключатель) и использовать XAML, чтобы показать или скрыть кнопку:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibility" />
</Window.Resources>
<StackLayout>
<ListView HorizontalOptions="FillAndExpand" ItemsSource="{Binding EquipmentList}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Name}" />
<Switch Name="toggleSwitch" IsToggled="{Binding State}" />
<Button
Command="{Binding BindingContext.DoCommand, Source={x:Reference TestPage}}"
CommandParameter="{Binding .}"
IsVisible="{Binding ElementName=toggleSwitch, Path=IsToggled, Converter={StaticResource BooleanToVisibilityConverter}"
Text="Click" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
Возможно, это не окно, в котором находится ваш StackLayout, но если вы разместите BooleanToVisibilityConverter в разделе ресурсов, вы сможете использовать его в своем файле XAML.
Это будет означать, что если в будущем имя свойства изменится, у вас будет только одно место, которое вам нужно обновить в пользовательском интерфейсе, и вы также используете мощь языка XAML.
Кроме того, как правильно указывают все, вам необходимо реализовать INotifyPropertyChanged в модели, чтобы коммутатор тоже обновлялся.