XamarinとPrismを利用して簡単なログインページを作ってみました。
以下の動作環境にて確認済み
- Visual Studio 2019 Community
- Android 9.0.99
- .NETStandard.Library 2.0.3
- Prism.Unity.Forms 7.1.0.431
※コピペ利用OKです。
View
<?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="Sample.Views.LoginPage"
Title="{Binding Title}">
<StackLayout Orientation="Vertical"
VerticalOptions="Center"
HorizontalOptions="Center">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0"
Grid.Column="0"
VerticalTextAlignment="Center"
HorizontalTextAlignment="End"
Text="ユーザID"/>
<Entry Grid.Row="0"
Grid.Column="1"
VerticalOptions="Center"
HorizontalOptions="Start"
Placeholder="ユーザID"/>
<Label Grid.Row="1"
Grid.Column="0"
VerticalTextAlignment="Center"
HorizontalTextAlignment="End"
Text="パスワード"/>
<Entry Grid.Row="1"
Grid.Column="1"
VerticalOptions="Center"
HorizontalOptions="Start"
Placeholder="パスワード"
IsPassword="True"/>
</Grid>
<StackLayout Orientation="Horizontal"
HorizontalOptions="Center"
VerticalOptions="Center">
<Button Text="新規登録"
Command="{Binding RegisterButtonClicked}"/>
<Button Text="ログイン"
Command="{Binding LoginButtonClicked}"/>
</StackLayout>
</StackLayout>
</ContentPage>
ViewModel
using Prism.Commands;
using Prism.Navigation;
namespace Sample.ViewModels
{
public class LoginPageViewModel : ViewModelBase
{
public DelegateCommand RegisterButtonClicked { get; set; }
public DelegateCommand LoginButtonClicked { get; set; }
public LoginPageViewModel(INavigationService navigationService) : base(navigationService)
{
Title = "ログインページ";
RegisterButtonClicked = new DelegateCommand(() => Register());
LoginButtonClicked = new DelegateCommand(() => Login());
}
private void Register()
{
// 登録ボタン押下時の処理
}
private void Login()
{
// ログインボタン押下時の処理
}
}
}
見え方
その他
補足・改善点など
- 重複しているスタイルが存在するため、別ファイルにて共通管理してしまうのが望ましい。
- 味気なさすぎるのでもう少しデザインを入れたい。
- Commandの名称はもう少し短くした方が見やすいか?
- 活性/非活性を切り替えられるようにしたい。
- 入力されたユーザID/パスワードを取得できるようにしなければいけない。
以上です。
スポンサーリンク