かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

MVVM

MVVM入門 その1「シンプル四則演算アプリケーションの作成」

ということでコードレシピにサンプルプログラムを投稿しました。以下から参照できます。とりあえず、簡単な四則演算を行うアプリケーションをテーマに書いてみました。ミスってるところや説明がおかしいと思われるところはがんがんコメントしてください。随…

ContextMenuでのBinding時の注意事項

コードレシピにサンプルプログラムを公開しました。 ContextMenu内のアイテムのBinding時の注意事項 この問題はtrapemiyaさんが遭遇した問題でTwitter上でやり取りしてる間に行きついた解決策になります。 自分でもはまりそうだと思ったので、将来の自分のた…

PrismとKinkumaFrameworkとNotifyPropertyWeaverを設定したプロジェクトテンプレート

VC# Expressでnuget使ったりと色々苦慮した結果プロジェクトテンプレートが一番楽なのかなと思いました。ということでさくっと作ってみました。 KF.zip 上記のzipをそのまま下記の場所にコピーします。 C:\Users\ユーザ名\Documents\Visual Studio 2010\Temp…

Style内でBehaviorやTriggerを設定したい

今回のお題の元ネタはこちらの記事です。 Attaching Behaviors from the Expression Blend SDK using Styles Style内でBlend SDKのBehaviorを設定できないか?ということなんですが、普通にやるとできません。そのため以下のような仕掛けを作ってやる必要が…

ViewModelのプロパティの変更を監視してアクションを実行する方法

コードレシピにサンプルをアップしました。はてなダイアリーより書きやすくていい!!!記事はこちらになります。 ViewModelのプロパティの変更を監視してアクションを実行する方法

Kinkuma Framework TODOリスト

とりあえず、ドキュメントをぼちぼち書いてる。気になる人(いないと思うけど)は、CodePlexのリポジトリに全部上げてるのでチェックしてみるといいかもです。突っ込みは大歓迎です。 ドキュメント MVVMについて Kinkuma Frameworkのコンセプトと目指すとこ…

Kinkuma Framework 1.2.7をリリースしてみました

nugetのほうにアップしてあります。 KinkumaFramework(Prism based MVVM Framework) - 1.2.7 今回のは機能追加ではなくて性能改善です。 Kinkuma Framework 1.2.5のViewModelの初期化がどれくらい遅いか試してみた 記述の簡潔さに力を入れてリフレクションを…

Kinkuma Framework 1.2.5リリースしました

ちょっと思いつきで、機能追加をしました。 KinkumaFrameworkとは PrismのMVVMサポートライブラリを補強するのと、自己満足を目指して作られています。現時点ではWPFに特化することで作られています。 プロジェクトページ http://okazukimvvmsupport.codeple…

DRY原則とMVVMで思う事

個人的に感じてる違和感なんですが、MVVMのVMのコードってDRY原則に反してるというか、同じようなパターンのコードがたくさんあるような気がするんですよねぇ。 29-DRY原則 コードスニペットも個人的な感覚だと、便利なコピペだと思ったりしてるので、使いど…

JPG画像の一括劣化ツール

ちょっと一括で劣化させたかったので作ってみました。需要は無いし、サンプルというにはアレなのでSkyDriveのほうにこっそりとアップ。 バイナリ 画像劣化まん.zip コード ImageConverter.zip

Kinkuma Framework 1.2.4を公開しました

CodePlexでも公開していますが、NuGetが楽に導入できます。 http://okazukimvvmsupport.codeplex.com/ 今回追加した機能は以下の機能です。 SaveFileDialog/FileOpenDialog用Actionの追加 インストール NuGetが楽です。Prismで検索するかKinkumaFrameworkで…

PrismベースのMVVMフレームワーク KinkumaFramework 1.2.3をnugetに追加しました

最近作ったPrismのMVVMサポートのクラスを使って作ったMVVMに必要そうなクラス群のKinkumaFrameworkのバージョンを1.2.2から1.2.3に更新しました。今回のバージョンアップによる追加のクラスはありません!ということで変わった点を紹介したいと思います。 V…

MVVMでファイルを開くダイアログを使う(View完結とViewModel経由)

さて、今日はリクエストをもらいました。以下のをやる方法を考えてみようと思います。 MVVMでボタンを押したらフォルダ参照ダイアログを出したい!こいうときは、Button Command InteractionRequest FolderBrowseActionって感じかなー?2011-04-04 12:34:06 …

MVVMパターンでコマンドの実行前に確認ダイアログとか出したくない?

前にも同じようなタイトルでBlogを書いてますが、今回は別の方法です。 前の記事:M-V-VMパターンでViewModelのコマンド実行後に何か処理したいよね 前のBlogの記事から大分時間が経って、今やるならという感じで書いてみます。 コマンド実行前に確認ダイア…

PrismをベースにしたMVVMフレームワーク更新しました

先日公開した、PrismをベースにしたフレームワークですがKinkumaFrameworkという名前にしました。きんくまは、Google画像検索すると山のように出てくると思います。現在はトリガーアクションの充実と、ドキュメントの作成をやっています。ドキュメントは、ま…

PrismベースのMVVMライブラリを作りました

バージョン4からMVVMのサポート機能が追加されたpatterns & practices: Prismですが、Prismのコードネーム?がComposite Application Guidance for WPF and Silverlightだったことからもわかるように、もともとMVVMを視野に入れて作られたライブラリではあり…

PrismベースのMVVMライブラリをnugetに登録してみた

ついでなので、前の記事で作成したライブラリをnugetに登録してみました。一緒にVisual StudioのデザイナでBehaviorをサポートするライブラリもnugetに追加したのでセットでお得? 2011/04/05追記 okazuki.mvvm.libraryからKinkumaFrameworkに変更しました。…

PrismのDelegateCommandとCommandManagerの連携

Prismは好きなんですがDelegateCommandのCanExecuteイベントハンドラが弱参照でイベントハンドラを持っているのと、CommandManagerのRequerySuggestedイベントも弱参照でイベントハンドラを持っているので、以下のようなコードを書くと、GCが走るとイベント…

PrismのDelegateCommandのかわり

Prismに不満はないようなあるような感じの今日この頃です。DelegateCommandのCanExecuteChangedイベントは自分で明示的に発生させないといけない作りになってたりします。Silverlightなら、CommandManagerがいないからそれでもいいんだけど、WPFだとCommandM…

T4 TemplateでViewModelの生成をするアイテムテンプレートを作りました

以前にも何度かT4 Templateを使ってViewModelの記述を簡略化する方法を書いてきました。 T4 TemplateでViewModelを生成する その3「Commandにも対応」 ViewModelのコードの自動生成機能とアイテムテンプレートを作ってみた これまでの方法の課題 ただ、この…

TextBoxで入力内容を変更してなくても検証処理を走らせたい

先日書いた画面が表示された直後に入力値の​妥当性検証を行い画面にフィード​バックをする方法ですが、MSDNフォーラムの元質問者の方からコメントをいただけました。 私の方で悩んでいた部分としては、初期化時にエラーにしたいのではなく、「画面初期化時は…

画面が表示された直後に入力値の​妥当性検証を行い画面にフィード​バックをする方法

MVVMパターンでSilverlightでアプリケーションを組んでて画面が表示された時から入力値の妥当性検証をしておきたいという要望があるとします。簡単にできるだろうと思ってたら、結構実装に時間がかかったので備忘録がわりにメモしておきます。 ちなみにネタ…

MVVM開発ってやっぱりExpression Blend無いとめんどくさいと思うようになってきた・・・

Expression Blend触ってて気づいた機能がありました、BehaviorのところにあるCallMethodActionの設定とかドラッグアンドドロップだけで出来るんですね・・・。あとは、ViewModelのDataContextの設定とか、その他もろもろがGUIでサクサクっと出来ちゃう。これ…

コントロールのDependencyPropertyじゃないプロパティとViewModelのプロパティをBindingする

先日の私の書いたViewのコントロールの非DependencyPropertyのプロパティの値をViewModelのプロパティに設定する方法に対してid:wave1008さんが早速レスポンスを返してくれました。 コントロールプッシュかViewModelプルか そちらからの引用になりますが、私…

コントロールのDependencyPropertyじゃないプロパティをViewModelに設定する

『「MVVMのメリット・デメリットを見つめなおす」を読んで』を読んで Silverlightで業務アプリを作るために越えるべき7つの壁(12) 上記の記事を読んで、現場でSilverlightを使って開発してる人の声というのはとても参考になると思いました。私はというと、何…

MVVMでメモリリークしちゃってました 原因と対策編 間違えてましたorz

元記事:MVVMでメモリリークしちゃってました 原因と対策編 id:taguoさんにコメントで間違いを指摘されていて、確認してみたらその通りだったので元記事を修正しました。というか弱いイベントパターンについてtaguoさんが凄い考察されてます。 WeakEventパタ…

MVVMでメモリリークしちゃってました 原因と対策編

2011/03/02 コメントの指摘を受けて修正。 間違ってた部分。 WeakPropertyChangedViewModelBaseクラスの以下の処理。 PropertyChangedEventManager.AddListener( this.Model, new PropertyChangedWeakEventListener( base.RaisePropertyChanged), string.Emp…

MVVMでDataGridで選択されている行を新しいウィンドウに表示させる

MSDN フォーラムでMVVMの画面遷移についてという質問が上がってたので、Prismを使ってやってみました。 この例で使ってるInteractionRequestの使い方は、以下の記事を参照してください。 MVVMパターンでVMからVを操作する Prism編 ViewModelの作成 今回は、V…

PrismのMVVM関連のクラスを使ってHello world

Prismの最新バージョンからMVVMでの開発をサポートしてくれるようになりました。という話を聞いてPrismをダウンロードしてきてレッツトライ!としようと思うと、Bootstrapperがどうの、EventAggregaterがどうの、Regionがどうの、MEFがどうのUnityがどうのet…

MessengerのかわりにReactive ExtensionsのSubjectあたりを代用してみる

@ugaya40 ブログのやつ、エラー履歴のViewへの通知みたいな一方通行なものは、URL みたいにRx使って解決する方がよくないかな?2011-02-23 19:20:17 via みについ to @ugaya40 という呟きを見て、あぁ確かに出来そうだと思ったので岩永さんのコードは見てな…

MVVMでVMからVへの通知方法を思いついたので書いてみた

注意:思いついただけです。最適な方法ではないと思います。 今回思いついたことのネタ元 思いついたといっても過去に人がやってるものをちょっといじくった感じです。ネタ元はこれが近いというか、ほぼそのままのイメージです。 MVVM パターンで VM から VI…

Visual Studio 2010のWPFとSilverlightのデザイナでBehaviorやTriggerActionを追加できるようにしてみた v2

先日WPF用に作ったツールをSilverlightでも使えるようにしました。 ダウンロード 以下のサイトで公開しています。 Behavior in Visual Studio 2010 WPF and Silverlight Designer- Support Tool ツールの目的 BehaviorやTriggerActionはWPF/Silverlightアプ…

最近言われてるMVVMの開発方法について

大前提すぎてあまり書かれてないことだけど大事なことなので・・・。 Expression Blendが無いと話しになりません!! (Behaviorの適用を手書きでやるくらいならコードビハインド書いたほうが現実的かもしれないという気もします)以上です。

F# + WPF + MVVM で足し算アプリ

さて、今日はF#のシーケンスあたりでもやろうかと思ってMSDNとにらめっこしてましたが、気が変わったのでF#でWPFでMVVMパターンな凄く小さなアプリケーションを作ってみることにしました。 作るもの 仕様は、以下のような感じです。 テキストボックスが2つ…

WPFで開発を効率的に進めるためのポイントについて思ったこと

id:int128さんがWPFで開発を効率的に進めるためのポイントについて書かれていますが、個人的な思いと少し違うかも?と思ったため自分の言葉で考えて書いてみました。ご意見、ご指摘大歓迎とあるので遠慮なくいってみます!*1WPFでは、ViewとModel(ドメインモ…

本読んでるよ

TOEIC380点ですが何か。 概念的な内容が書かれてる部分は非常に辛いです。でもコードがあるところに知りたいことは結構書かれてるのでコードを読んでから文章読みます。わからない単語は、スルー。これ大事。4割くらい理解できてたらいいなぁ・・・w

MVVMにおけるView層での入力値エラーの有無をViewModelで知る方法

MSDNフォーラムで以下の質問があったので考えてみました。 MVVM における入力検証について シナリオとしてはこんな感じ。 ViewModelではint型のプロパティを公開している View側でTextBoxにバインドしている ValidatesOnExceptions=trueとValidation.ErrorTe…

WPFでMVVMの本が出るらしい(英語)

ちょっとぽちるかどうか悩んでる。

ViewModelのコードの自動生成機能とアイテムテンプレートを作ってみた

非実在コマンドパターンを掘り下げていくと、どう頑張ってもVisual Studioがコマンドをうまく認識してくれない+Expression Blendのデザイナがエラーはいて表示してくれなくなったりと挫折してしまいました。 ということで、ViewModelは今の所自動生成するの…

MVVMの小さなサンプル サケ弁タイマー2

1つ前のサケ弁タイマーのサンプルですが、Modelに該当する部分をid:anis774さんのコードをマルパクリしていたのをReactive Extensions使うように書き直してみました。以下からダウンロードできます。 SakebenTimer2.zip 因みにModel部分のコードだけ以下に…

MVVMの小さなサンプル サケ弁タイマー

id:anis774さんが、勉強のために作ったMVVMの小さなサンプル焼き弁タイマーというアプリをugaya40さんがこっそり作ってるMVVMのインフラのLivet(まだ作りかけ)とExpression Blend SDKのBehaviorとかを駆使して作りなおしてみました。 ModelとViewのXAMLは、…

非実在コマンドパターンを使う場合はExpression Blendを使いましょう

先日考えた、非実在コマンドのパターン(以下のリンク)ですが残念なことが1つありました。 MVVMとコマンドはどこへ向かっているのか それは、Visual Studio 2010のデータバインディングビルダーで仮想的に作ったコマンドのプロパティを認識してくれないと…

MVVMとコマンドはどこへ向かっているのか

ということで、最近MVVMパターンでコマンドのプロパティをいちいち実装するのがめんどくさいと思っている今日このごろです。 ということで、ちょっと試行錯誤してみました。コマンドのプロパティは要はバインドから取得できればいいだけで実在しなくてもいい…

MVVMパターンでVMからVを操作する Prism編

Prismをダウンロードして、MVVMのサンプル実装を見てるとMVVMパターンなのにダイアログ出したりしてたので、どうやってるか見てみたら、便利なクラスが用意されてました。定義されているアセンブリは Microsoft.Practices.Prism.Interactivity.dll です。 使…

Prism 4.0 Drop9が超素敵な感じになってる

Composite Application Guidanceとして知られる通称Prismですが、暫く見ない間にPrism 4.0 Drop9というところまでいってました。 こいつの凄いところは、今までDIコンテナとしてはUnityを使ってましたが、MEFが使えるようになっているところが非常に素敵です…

T4 TemplateでViewModelを生成する その3「Commandにも対応」

前のやつにCommandも定義出来るように追加してみました。 namespace VMDsl { using System.Collections.Generic; // 名前空間 public class NSDef { public NSDef() { this.Classes = new List<ClassDef>(); } public string NS { get; set; } public List<ClassDef> Classes { g</classdef></classdef>…

T4 TemplateでViewModelを生成する その2「DSLちっくにする」

前回たたき台を作ったMVVM生成のためのT4 Templateですが正直あんまり楽になった気がしないです。何故かというと、クラスのメタデータの定義が非常に冗長な感じになってたからだと思います。 1プロパティしかないクラスを定義するだけで、20行以上も書かな…

T4 TemplateでViewModelを生成する その2「DSLちっくにする」

前回たたき台を作ったMVVM生成のためのT4 Templateですが正直あんまり楽になった気がしないです。何故かというと、クラスのメタデータの定義が非常に冗長な感じになってたからだと思います。 1プロパティしかないクラスを定義するだけで、20行以上も書かな…

T4 TemplateでViewModelを作る

ちょいと作ってみた。 これをひな形にやっていけばいかなぁ。もっといい方法とかあるよ!って人は教えてください。 ClassDef.ttinclude とりあえずクラスのメタデータを定義するためのクラス群 <#+ // 名前空間 class NSDef { public string NS { get; set; …

MVVMパターンでVMからViewを操作したい くどい?

何回もこのBlogで使ってるタイトルなので、そろそろクドイ感じもしますが、尾上さんのBlogに素敵なエントリが公開されてました。 http://ugaya40.net/wpf/mvvm_viewmodel_to_vew.htmlBehaviorってやっぱり素敵ですよね。 こんな風に綺麗にまとめたいな。