WPF-MVVM開発手法
誰かにMVVMを説明するとき用のメモです。MVVMを採用するメリットに関してはかなり局所的な内容になっているかもしれません。詳しくは下記の説明等を参照ください。
参考:https://qiita.com/yuutetu/items/ea175b73e1dbbfd355db
MVVM概要
Model(データ入出力管理)、View(UI処理)、ViewModel(ModelデータをUIデータに変換、及び、操作コマンドより対応したModel処理を呼び出す)で構成する開発手法です。
MVVM開発手法を採用するメリットとしては、下記が挙げられます。
- UIとビジネスロジック(データ・処理)が分離される
具体的には、Formアプリケーションの一般的な構成では、UIロジックがModelのプロパティを直接参照しますが、この手法の場合、UI処理開発時にModelが必要となるか、UI処理の中に直接ビジネスロジックが存在することとなります。
一方、MVVM開発手法では、例えばデータバインドを用いると、UIからは直接Modelのインスタンスを参照せず、対応するプロパティの名前でバインド定義する為、View開発時にModelのインスタンスは不要です。
- UIロジックとビジネスロジックを分離することで、コードの可読性が向上する。
データバインドの例
<Window ~省略~ />
<Grid>
<TextBox Text="{Binding Path=propString.Value}" />
<Button Content="Button" Command="{Binding ShowMessageButtonCommand}"/>
</Grid>
</Window>
<Window ~省略~ />
<Grid>
<TextBox Text="{Binding Path=propString.Value}" />
<Button Content="Button" Command="{Binding ShowMessageButtonCommand}"/>
</Grid>
</Window>
3. ViewModel処理:MainWindowViewModel.cs
using Prism.Mvvm;
using Reactive.Bindings;
namespace prism_test.ViewModels
{
public class MainWindowViewModel : BindableBase
{
/* テキストボックスに表示する文字列 */
public ReactiveProperty<string> propString { get; set; } = new ReactiveProperty<string>();
/* ボタン押下時のコマンドプロパティ */
public ReactiveCommand ShowMessageButtonCommand { get; }
/* コンストラクタ */
public MainWindowViewModel()
{
propString.Value = "0";
this.ShowMessageButtonCommand = new ReactiveCommand().WithSubscribe(this.buttonpush);
}
/* ボタン押下時のコマンド実体 */
public void buttonpush()
{
propString.Value = (int.Parse(propString.Value) + 1).ToString(); ;
}
}
}
Author And Source
この問題について(WPF-MVVM開発手法), 我々は、より多くの情報をここで見つけました https://qiita.com/ka26/items/d1c36e78195acdd3d505著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .