C#
Xaml
Xamarin
Xamarin.Forms

はじめに

XamarinのBindingについてという記事を見つけた。

この記事の内容は、元になるSwitchに応じて、別の複数のSwitchのオン・オフをするという内容。

元記事はすべてC#(コメントではXAMLのみ)で書かれているのだが、練習のためにMVVMで書くとどうなるかやってみた。

コード

ViewModel

MainPageViewModel.cs
using Prism.Mvvm;
using Prism.Navigation;

namespace BindableObjectTest.ViewModels {
    public class MainPageViewModel : BindableBase, INavigationAware {
        private bool switch1Status;
        public bool Switch1Status {
            get { return switch1Status; }
            set {
                SetProperty(ref switch1Status, value);
                Switch2Status = switch1Status;
                Switch3Status = switch1Status;
            }
        }
        private bool switch2Status;
        public bool Switch2Status {
            get { return switch2Status; }
            set { SetProperty(ref switch2Status, value); }
        }
        private bool switch3Status;
        public bool Switch3Status {
            get { return switch3Status; }
            set { SetProperty(ref switch3Status, value); }
        }

        public MainPageViewModel() {
        }

        public void OnNavigatedFrom(NavigationParameters parameters) {

        }

        public void OnNavigatedTo(NavigationParameters parameters) {
        }

        public void OnNavigatingTo(NavigationParameters parameters) {

        }
    }
}

XAML

MainPage.xaml
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
    prism:ViewModelLocator.AutowireViewModel="True"
    x:Class="BindableObjectTest.Views.MainPage"
    Title="MainPage">
    <StackLayout HorizontalOptions="Center" VerticalOptions="Center">
        <Switch IsToggled="{Binding Switch1Status}" />
        <Switch IsToggled="{Binding Switch2Status}" />
        <Switch IsToggled="{Binding Switch3Status}" />
    </StackLayout>
</ContentPage>

結論

個人的には、MVVMで書くほうが動作がわかりやすい気がします。