##MVVM開発について考えました(^^♪
Livet開発終了です。
MVVM Light、DialogMessage提供終了です。
Prism、プレーンすぎて、作らなければいけないことが多すぎです。
そして、令和の今、MVVMならCaliburn.Microが良いです!(^^)!
###では、さっそく、サンプルを作ってみましょう(^^♪
###(1)新しいプロジェクトを作成します。
###(2)NuGetパッケージの管理で、Caliburn.Micro.Startをインストールする。
###(3)App.xamlを書き換える。
<Application x:Class="CMSample.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CMSample"
>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:AppBootstrapper x:Key="bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
###(4)ビルドして、実行する。はい、動きました(^^♪
###(5)今度は、より実践的にしてみましょう。
Views、ViewModels、Modelsの3つのフォルダを作ります。
そして、IShell.cs、ShellViewModel.csを、ViewModelsフォルダにドラッグ&ドロップします。
そして、ShellView.xamlを、Viewsフォルダにドラッグ&ドロップします。
###(6)ビルドして、実行する。はい、動きました。
###(7)それでは、いよいよ本番です!(^^)!
###(8)ViewsフォルダのShellView.xamlの削除
###(9)プロジェクトに、ShellView.xamlを作成する。
###(10)プロジェクトのShellView.xamlを、Viewsフォルダにドラッグ&ドロップする。
###(11)IShell.csを書き換えます。
namespace CMSample {
public interface IShell
{
//名前、プロパティ
string P_s_名前 { get; set; }
//名前があるか、プロパティ
bool P_b_名前があるか { get; }
//名前を言え、メソッド
void 名前を言え();
}
}
###(12)ShellViewModel.csを書き換えます。
using System.Windows;
namespace CMSample {
public class ShellViewModel : Caliburn.Micro.PropertyChangedBase, IShell
{
//名前、プロパティ
private string m_s_名前;
public string P_s_名前
{
get => m_s_名前;
set
{
m_s_名前 = value;
NotifyOfPropertyChange(() => P_s_名前);
}
}
//名前があるか、プロパティ
public bool P_b_名前があるか => !string.IsNullOrWhiteSpace(P_s_名前);
//名前を言え、メソッド
public void 名前を言え()
{
if (P_b_名前があるか)
MessageBox.Show($"こんにちは、{P_s_名前}さん");
else
MessageBox.Show($"名前を入力してください", "お願い",
MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}
###(13)ShellView.xamlを書き換えます。
<Window x:Class="CMSample.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CMSample"
mc:Ignorable="d"
xmlns:cm ="http://www.caliburnproject.org"
Width="300" Height="180"
Title="CMサンプル">
<Grid>
<StackPanel Margin="10">
<Label Content="お名前を入力してください"/>
<TextBox
Margin="11,0"
Text="{Binding P_s_名前, UpdateSourceTrigger=PropertyChanged}"/>
<Button
Margin="11,10,11,0"
IsDefault ="true"
Content="返答"
cm:Message.Attach="名前を言え"/>
</StackPanel>
</Grid>
</Window>
###(14)ビルドして、実行します。
###(15)名前を入れないで、返答ボタンを押します。怒られます。
###(16)名前を入れて、返答ボタンを押します。
###(17)最後に、お掃除します。
MainWindow.xamlと、ShellView.xaml.csと、App.xaml.csを、必要がなくなったので、削除します。
###サンプルの作成は、以上です。
##読んでくださって、ありがとうございました(^^)/