LoginSignup
3
5

More than 5 years have passed since last update.

[Xamarin]MVVMの練習

Last updated at Posted at 2018-01-04

はじめに

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で書くほうが動作がわかりやすい気がします。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5