Я считаю, что самым простым способом было бы использовать для этой цели триггеры.
Триггеры позволяют декларативно express действий в XAML, которые изменяют внешний вид элементов управления на основе событий или изменений свойств. ( Источник )
Вы можете привязать DataTrigger
к значению Switch
, чтобы изменить внешний вид другого элемента управления. Я построил небольшой пример с Switch
, который изменяет BackgroundColor
из BoxView
, только для демонстрационных целей:
<StackLayout>
<Switch x:Name="Switch" />
<BoxView BackgroundColor="Crimson">
<BoxView.Triggers>
<DataTrigger TargetType="BoxView"
Binding="{Binding Source={x:Reference Switch}, Path=IsToggled}"
Value="True">
<Setter Property="BackgroundColor" Value="CornflowerBlue" />
</DataTrigger>
</BoxView.Triggers>
</BoxView>
</StackLayout>
Я добавил DataTrigger
к BoxView.Triggers
, который реагирует в собственность Switch.IsToggled
. Если он установлен на True
(см. Свойство Value
), Setter
будет применен к BoxView
, а BackgroundColor
будет установлен на CornflowerBlue
.
В вашем случае это будет что-то вроде
<ContentPage.Triggers>
<DataTrigger TargetType="ContentPage"
Binding="{Binding Source={x:Reference Switch}, Path=IsToggled}"
Value="True">
<Setter Property="BackgroundColor" Value="White" />
</DataTrigger>
</ContentPage.Triggers>
Нет необходимости использовать BindingContext
в этом случае.
Работы: