MVVM Light Toolkitで簡易アプリ作成
はじめに
WPF(MVVM)でのHello World的なアプリ作成を試してみる。
たぶんもっとスマートな方法があると思うけど…。
環境
- Windows 10
- Visual Studio 2017
- MVVM Light Toolkit
MVVM Light Toolkitでのサンプルとしては、こちらでサンプルコードが提供されている。
今回の簡易アプリ作成の上で参考にした。
プロジェクト作成
WPFでプロジェクト作成し、
ツール → NuGetパッケージマネージャ → ソリューションのNuGetパッケージの管理
でパッケージマネージャを表示させ、下記パッケージを導入する。
- MvvmLight
- ReactiveProperty
インストールに成功すると、ViewModel
フォルダが生成されMainViewModel.cs
, ViewModelLocator.cs
が作成される。
自分の環境では、生成されたViewModelLocator.cs
にエラーが出てビルドできず、下記修正を加えた。
// using GalaSoft.MvvmLight; // コメントアウト
using CommonServiceLocator; // 追加
using GalaSoft.MvvmLight.Ioc;
// using Microsoft.Practices.ServiceLocation; // コメントアウト
Viewに下記を追加する。
<Window x:Class="WpfMvvmTrain01.MainWindow"
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:WpfMvvmTrain01"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"
DataContext="{Binding Source={StaticResource Locator}, Path=Main}">
<!-- ↑ DataContext を追加 -->
なんか表示させる
MainViewModel.cs
の MainViewModelクラスに適当にプロパティを追加して動かしてみる。
数字を表示させ、ボタンで増減させてみる。
public MainViewModel()
{
this.Number = new ReactiveProperty<int>();
this.IncrementNum = new ReactiveCommand();
this.IncrementNum.Subscribe(_ => this.Number.Value++);
this.DecrementNum = new ReactiveCommand();
this.DecrementNum.Subscribe(_ => this.Number.Value--);
}
public ReactiveProperty<int> Number { get; set; }
public ReactiveCommand IncrementNum { get; private set; }
public ReactiveCommand DecrementNum { get; private set; }
<Grid>
<StackPanel>
<TextBlock Text="{Binding Number.Value}"/>
<Button Content="increment" Command="{Binding IncrementNum, Mode=OneWay}"/>
<Button Content="decrement" Command="{Binding DecrementNum, Mode=OneWay}"/>
</StackPanel>
</Grid>
実行結果
ボタンを押すと左上の数値が変動する。
自分でほとんどコードを書くことなく動作させることができた。
Author And Source
この問題について(MVVM Light Toolkitで簡易アプリ作成), 我々は、より多くの情報をここで見つけました https://qiita.com/ogsoon/items/6089549d81ab28722b4d著者帰属:元の著者の情報は、元の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 .