MVVM
MVVMパターンでよく問題となるのが、画面遷移 の問題です。 単一画面であれば、View と ViewModel をバインド機構を使って疎結合にできるため、なんら問題は生じませんが、画面遷移を行う場合、ViewModel から Window を起動すると View - ViewModel 間で密…
ちょっと某所で質疑があがってたので、MVVMパターンにおける画面とユーザーコントロールの連携について考えてみました。 お題をかいつまんで言えば、こんな話です。 メインウィンドウと二つのユーザーコントロールが存在し、それぞれプロジェクトを分けて管…
先日来、某所で WeakEvent パターンの話題があがってます。そこで Livet の弱参照パターンの話もちょろっとしてみたわけですが・・・でも VBユーザーだとどうだろう・・・VBユーザーの多くはラムダ式馴染みないし、EventHandler をパラメータで渡すコードが…
必要に迫られ、DOBON.NET さんの以下の記事BackgroundWorkerクラスを使用して進行状況ダイアログを作成するを参考に、WPF & Livet で進行状況ダイアログを作ってみました。 ダイアログは Forms からも呼び出せることを想定したインターフェイスになってます…
XP での描画遅延の問題(Button の Enable/Disableが切り替わらない)を回避するのに、自前の RelayCommand を以下のように実装してみました。 /// <summary> /// 現在の状態でこの RelayCommand を実行できるかどうかを判断します。 /// </summary> public bool CanExecute(obj…
WPF の Dispatcher について勉強がてら自分なりに得た理解をまとめてみました。WPF アプリケーションは、レンダリング(描画)用とユーザーインターフェイス用の2つのスレッドを用いて動作します。 レンダリングスレッドはバックグラウンド動作のため、開発…
以前のエントリからだいぶ日にちが経ち、Livet も 1.0.6.1 と大きくバージョンアップしました。それに伴い仕様も大きく変わり、VB ユーザーには少々使いづらくなったので、以前の改造だけじゃ足りない部分も増えてます。そこで最新バージョンに合わせ、Livet…
A.自分でロジックを組むこともできますが、GrapeCity の WPFコンポーネント InputMan for WPF に含まれている GcTextBox を使えば、入力制限を簡単に設定できます。InputMan for Windows Forms で長年培われた日本語入力技術がこのコンポーネントにも反映さ…
Livet の Command クラス、ViewModelCommand で CanExecuteChanged メソッドが呼ばれるタイミングが判らないとのコメントを頂きました。 プロパティの状態によってコマンドの有効・無効を制御したいなら、セッター内で ViewModelCommand.RaiseCanExecuteChan…
今朝、ツイッターでこんなやりとりがありました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "http…
ここ最近、MVVM をプロジェクトにスムーズに導入できない問題に関してずっと考えてました。MVVM をうまく摘要できないケースを大別すると、以下の三つに分類できるのではないでしょうか? そもそもパターンが何か判らない。 適切なインフラを使用しない、も…
最近俄かに出てきたのが、この MVPVM というパターン。MVVM をより発展させたパターンらしいです。図にするとざっとこんな感じらしい。 現状日本語で詳しく解説してるのは、MSDN マガジンの記事だけ。もっとも原文は英語なので、若干翻訳が怪しいとこあるけ…
A.Livet を使うとコードビハインドを使わずに画面遷移が可能になります。Livet では画面遷移のメッセージアクションが提供されているので、これを使うといいでしょう。 ケースよっては、子画面を起動したら親画面を非表示にしたい場合もあります。その場合…
#以下の記事は旧いバージョンによる記事です。最新版はこちらを参考にしてください。 国産 MVVM インフラ「Livet」も徐々に普及しつつあるようで、MSDN フォーラムでもちょくちょく名前を聞くようになってきました。 私も業務で使い倒してますが、VB プロジ…
IS12T 購入をきっかけに Windows Phone アプリにチャレンジしてみました。ネタ元は Code Recipe の以下の記事です。 10 行でズバリ!! C# Windows Phone 7 タイマーを使ったアプリケーションの開発 チュートリアルどおり作っても面白くないので、コードビハ…
TreeView にどう再帰的にデータを設定するか調べていたら、id:griefworker さんの以下の記事が見つかりました。 TreeView が配置された UI で Model-View-ViewModel パターンを使う方法 なるほど!HierarchicalDataTemplate を使えばいいわけですね!*1 以下…
なんか某所で、先日のエントリから話が発展して、かなり盛り上がってた(?)ようなので・・・ コードビハインドがどーのと言ってましたが、本来なら以下のようにすべきで、コードビハインド使う必要ないと思うんですがねぇ・・・。
本日はさらに踏み込んで、Livet が提供するメッセージングアクションのうち InformationDialogInteractionMessageAction ConfirmationDialogInteractionMessageAction OpenFileDialogInteractionMessageAction SaveFileDialogInteractionMessageAction の四…
昨日のエントリーのサンプルではつまらないという貴方に、さらに発展させた使い方を考えてみました。 たとえばこんな感じ。コードビハインドを使わずに、コンボボックスで選んだ操作を ViewModel のコマンド経由で実行します。 まず ViewModel のコードです…
本日のエントリーでは、Livet の Messenger 機能をチュートリアル風に公開してみます。これを使うと、画面の終了・最大化・最小化・標準化を、コードビハインドを全く書かずに操作することができます。今回は Visual Studio と Blend を使っています。Livet …
先日のエントリ 「WPF で Google Map API を使ってルート検索してみる(Livet版)」 では、View のコードビハインドで WebBrowser.NavigateToString メソッドを呼び出してたわけですが、昨日 MSDN フォーラム見てたら、以前私がビヘイビア書いてたスレ見つけま…
昨日 Google Map API でルート検索するサンプルを公開しましたが、本日はさらに一歩進め、先日のサンプルの Livet 版を作ってみました。 Livet は純国産の MVVM インフラで、先日最新版 0.98RC が公開されました。前のバージョンから大きく変わったとのこと…
昨日も Google Maps API の記事を書きましたが、今日は一歩進めて WPF のWindow 上でルート検索するサンプルを作ってみました。先日から Google Maps API の調査をしてますが、スクリプト書いてるだけじゃ面白くないので、WPF の勉強も兼ねて MVVM パターン…
国内有数の MVVMer である尾上さんが開発中の Livet を触ってみました。 現在はまだドキュメントが整備されておらずどこから手を付けていいか判らない状態なので、まずはサンプルプロジェクトを触ってみようということに。ちなみに Livet って何という人のた…
昨日の記事では、コマンドを定義してなかったのですが、本日は C++/CLI でコマンドにチャレンジしてみました。 まず RelayCommand クラスを C++/CLI で書いてみます。するとこうなる・・・ // RelayCommand.h #pragma once using namespace System; using na…
現在 MVVM パターンを勉強中なんですが、View と ViewModel とModel と三つのレイヤーに明確に分離できることを見て、だったら各レイヤーごとにプロジェクトも完全分離して、ついでに各レイヤーごとに言語も分けて作ってみようと思いました。ついでに C++/CL…
いまさらですが、今年に入って知った最大の成果は、WPF なら MVVM パターン使うの当然じゃんということです。でもこの話、一部じゃまだまだ異論があるようで、ネットでちょっと調べるみると 単体テストしないなら MVVM 不要じゃん。 直感的に理解できねえし…