タグ

MVVMに関するa-hamahamaのブックマーク (78)

  • WPF/Silverlight/Windows Phone共通WeakEvent機構 - the sea of fertility

    この記事はSilverlight Advent Calender 2011の12/11分の記事です。前日は@neueccさんの.NETの標準シリアライザ(XML/JSON)の使い分けまとめでした。 WeakEventとは? WeakEventとはイベントハンドラの解除忘れによるメモリリークが発生しないイベント機構の事です。 .NETでメモリリークが発生する主要要因の一つとして、イベント受信側クラスがイベントハンドラの登録を解除しない事で発生するメモリリークが挙げられます。ステートレスなWebプラットフォーム上ではほとんど発生を考慮しなくて良い問題ですが、ステートフルなリッチクライアントではよく問題になります。WeakEvent機構はそのためのソリューションの一つとしてもともとはWPF用に用意されていた機構です。その証拠に.NET4ではWeakEventManagerなどのWeakEvent

  • [WPF] MVVMを使用した場合のViewのフェードイン・フェードアウト用ヘルパクラスの実装

    前回の「MVVMを使用した場合のViewのフェードアウトの実装方法について」について書きなぐりだけど実装が一応出来たのであげます。 まず、MSDNマガジンの「Model-View-ViewModel デザイン パターンによる WPF アプリケーション」を元にしていますので、出てくる文言が分からない場合はリンク先を参照してください。 参考サイトでは、MainWindowView内でWorkspaceエリアにAllCustomerViewとCustomerViewが動的に配置されます。 MVVMパターンを使用しているので、Viewの配置はViewModelインスタンスの扱いによって行われます。 Viewが描画される仕組みは、ViewModelとViewがDataTemplateによって関連付けられ、ViewModelインスタンスが存在した場合にViewが読み込まれます。 逆にViewModel

  • MVVM:Messengerを理解するために自作してみた(1):Gushwell's Dev Notes

    MVVMを勉強していたら、Messengerというものが出てきました。 これって何だろうか。 .NET Frameworkのクラスじゃなくて、MVVM Light Toolなどのフレームワークで 用意されているもので、ViewModelからViewを操作する時に利用するもののようです。 要は、ViewModelとViewの仲を取り持つ仲介者クラスです。 と、ここまでは分かりましたが、それ以上のこと(特にどういう仕組みなのか)が良くわかりません。 そこで、理解を深めるために、MVVM Light Toolの外部インターフェイスを参考に Messengerクラスをちょっと自作してみました。 とはいっても、ものすごい手抜きなので、これを実際に使うわけにはいかないと思うし、 MVVM Light Toolのソースコードは一切みていないので、僕の理解が間違っている可能性は ありますが、まあ、Mess

  • MVVM:コードビハインドに記述しても良いと思う:Gushwell's Dev Notes

    Messengerを理解するために自作してみた(1)-(3) Messenger+Behaviorを理解するために自作してみた(1)-(3) でとりあえず、コードビハインドにコードを記述せずに、ViewModelからViewを操作する 方法については理解したつもりだけれど、 それでも、今の僕の経験と知識では、コードビハインドに次のようなコードを書いても、 良いんじゃないかなーと思ってます。 private void button1_Click(object sender, RoutedEventArgs e) { if (MessageBox.Show("実行しますか", "確認", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { vieewModel.Execute(); } } こう主張すると、 「コードビハインドにView以外のロ

  • 東京マラソンの日に外に一歩も出ないオレ - wave1008の日記(主にSilverlight)

    先日MVVMをDISったが、説明不足気味でDISりっぱなしでは無責任かと、ちと反省している。 SilverlightでMVVMを使うのは問題があるので昔ながらのWindows Formsスタイルの開発に戻るべきだと受け取られたとしたら、それは誤解である。Silverlight(あるいはWPF)ではもはやWindows Formsスタイルの開発はできないし、そうすべきではないからだ。なので、今日はフォロー記事を書いてみる。 Silverlightの各コントロール群はMVVMの特徴であるデータバインドを前提に設計されている。なので、従来のWindows Formsスタイルの開発はできなくなっている部分が多々ある。 たとえばDataGridWindows FormsのDataGridViewならばセルの何行何列をインデックス指定すればセルのオブジェクトを取得でき、さらに背景色やフォント色などの

  • MVVMパターンの常識 ― 「M」「V」「VM」の役割とは?(4/5) - @IT

    .NET開発者中心 厳選ブログ記事 MVVMパターンの常識 ― 「M」「V」「VM」の役割とは? 尾上 雅則 2011/05/18 ■Model Modelは、C#などの汎用プログラミング言語で記述され、ドメイン・ロジックとデータ、つまりはビジネス・ロジックとビジネス・ドメインのステートを持ちます。 ●Modelについてよくある誤解 ― ステートレス、サーバ側がModel、永続化層など Webシステムでよく採用される3層構造におけるデータ・アクセス層やビジネス・ロジック層の常識を、MVVMパターンのModelに持ち込むのはやめましょう。WPF/Silverlightなどのリッチ・クライアント世界のModelは、Webシステムのそれとは決定的に違います。決定的に違うのは、それはステートフルであることです。 多くのWebシステムのビジネス・ロジック層やデータ・アクセス層自体は、基的にステート

  • Livet - the sea of fertility

    Livet WPF4 MVVM インフラストラクチャ ProjectHome : http://ugaya40.net/livet SourceCode : https://bitbucket.org/ugaya40/livet/ Livetの概要と導入方法 LivetはWPF4のためのMVVM(Model/View/ViewModel)パターン用インフラストラクチャです。.NET Framework 4 Client Profile以上で動作し、zlib/libpngライセンスで提供しています。zlib/libpngライセンスでは、ライブラリとしての利用に留めるのであれば再配布時にも著作権表示などの義務はありません。しかし、ソースコードを改変しての再配布にはその旨の明示が義務付けられます。 Livetの目指すところ 現在、WPFでMVVMパターンによる実装を行うにはインフラストラクチャの

  • MVVMパターン学習のファーストステップ – 何をどこまで勉強するか - the sea of fertility

    よくTwitter上などでMVVMパターンの学習は難しいという話を聞きます。最近その理由と認識のずれが少しづつ解ってきたので、書いてみる事にしました。 ネット上には様々なサンプルコードがありますが、「MVVMパターンを使う」という視点で学習する場合、用意した開発環境によって学習する事は異なってきます。 何故なら、設計パターンの思想の再現度は「その設計パターンのためのライブラリと環境」によって大きく異なるものだからです。 ASP.NET MVCが導入できない状況でASP.NET MVCをやろうとしますか?。そんな事をしようとすると業務ドメインのロジックに注力するどころか、MVCの概念を正しく理解しているのはもちろんの事、ASP.NETパイプラインの仕様に詳しく精通している必要もあります。他の環境(例えばRubyにおけるRails)でMVC補助がどうやって成立しているかも踏まえた上でインフラス

  • MVVMでView内のコントロールをViewModelで参照したい

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 質問 2009年7月15日水曜日 8:17 WPF Model-View-ViewModel Toolkit を使って作ったプロジェクトをベースにアプリケーションを作成しています。 ウィンドウ内の特定のFrameworkElementのスクリーンショットを取るコマンドを作成したいのですが、ViewModelからどうやってView内のコントロールのインスタンスにアクセスすればよいかわかりませんでした。 以下の二つの方法を考えたのですが、うまくいきませんでした 1.コマンドにFrameworkElementを渡すパラメータを付けて、ViewからViewModelに渡す DelegateCommand に、パラメー

    MVVMでView内のコントロールをViewModelで参照したい
  • [WPF][C#]Model View ViewModelパターンでハローワールド

    MSDNマガジン 2009年2月号にある「Model-View-ViewModel デザイン パターンによる WPF アプリケーション」にあるModel-View-ViewModelパターンが素敵です。 ざっくり説明すると… Model 通常のクラス。 レガシーなC#やVBで作ったクラスたちです。 View XAMLです。大体UserControlです。 ViewModel INotifyPropertyChangedインターフェースや、IDataErrorInfoインターフェースを実装したViewに特化したクラスです。 ViewModelのデータをViewへ表示する仕組み ViewのDataContextにViewModelを入れてBindingして表示します。 IDataErrorInfoや、ValidationRuleを使って入力値の検証を行います。 Viewでのボタンクリック等の操

  • FileSystemObject オブジェクトでファイル名にワイルドカード文字を使用できますか - Hey, Scripting Guy!

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    FileSystemObject オブジェクトでファイル名にワイルドカード文字を使用できますか - Hey, Scripting Guy!
  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

    ウェブリブログ:サービスは終了しました。
  • 設計パターン - モデル - ビュー - ビューモデル (MVVM: Model-View-ViewModel) の問題点とその解決策

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 モデル - ビュー - ビューモデル (MVVM: Model-View-ViewModel) の問題点とその解決策 Robert McCarter サンプル コードのダウンロード Windows Presentation Foundation (WPF) と Silverlight には最新のアプリケーションを構築するための高度な API が用意されていますが、WPF のさまざまな機能を理解し、互いに調和させて適用し、設計が適切で保守しやすいアプリケーションを構築することは、難しくなる場合があります。このような問題を解決する糸口はどこにあるでしょう。また、アプリケーションの適切な構築方法とはどのようなもので

    設計パターン - モデル - ビュー - ビューモデル (MVVM: Model-View-ViewModel) の問題点とその解決策
  • いまさら聞けない「MVVM + Messenger パターン」超入門 - present

    はじめに 以前、MVVM パターンで ViewModel から View を操作する話題で祭になりました。 MVVM パターンで VM から VIEW を操作したい MVVMでVMからViewを操作する考察 - The Road to C# Master Trapemiya MVVMパターンでVMからVに通知する方法 - かずきのBlog@Hatena MVVM パターンで ViewModel から Viewを操作する方法 - present その後しばらく WPF や Silverlight から離れていたんですが、その間に Messenger というパターンが有力になってきたみたいです。さっそく調査開始。 Messenger パターンって? 簡単に説明すると、View と ViewModel が共通の Messenger を参照し、ViewModel は Messenger を介して

    いまさら聞けない「MVVM + Messenger パターン」超入門 - present
  • 結局最後は「MVVM + Messenger + Behavior パターン」に行き着いた - present

    はじめに 前回、Messenger パターンという、ViewModel から View に要求を送る方法を試しました。 いまさら聞けない「MVVM + Messenger パターン」超入門 - present ただ、「View のコードビハインドにメッセージを処理するコードなんて書きたくない!」っていう人は結構いるみたいです。私もできることならコードビハインド書きたくないですね。 そんな人向けに、「Blend SDK に含まれている System.Windows.Interactivity.dll を使って、メッセージに対する処理を XAML で書いてしまおう」という、 Messenger を発展させたパターンがありました。その名も「Messenger + Behavior パターン」。 Messenger + Behavior パターンの鍵 System.Windows.Interact

    結局最後は「MVVM + Messenger + Behavior パターン」に行き着いた - present
  • MVVMパターンでViewModelからViewを操作したい - the sea of fertility

    僕の結論。そんなの必要ない。 鍵を握るのはBlend付属アセンブリSystem.Windows.Interactivity.dllです。 ViewModelからViewを操作したい時のシナリオ パッと思いつくのは以下の3つでしょうか。 コマンドの実行前・実行後にアニメーションを実行する。アニメーションが終了してからコマンドを実行したい場合など。 ダイアログの表示。確認ダイアログ・ファイルを開くダイアログ等いろいろありますよね。 画面遷移。言わずもがな。 この3つ、Blend付属アセンブリSystem.Windows.Interactivityを使う事でビヘイビア(正確にはTriggerAction)の実装のみで可能です。コードビハインドも、Viewにインターフェースも、Messengerパターンも、ReverseCommandも必要ありません。 使用例 今回の例示で使用した全てのソース

  • MVVMパターンの常識 ― 「M」「V」「VM」の役割とは?(1/5) - @IT

    .NET開発者中心 厳選ブログ記事 MVVMパターンの常識 ― 「M」「V」「VM」の役割とは? ―― 「the sea of fertility」より ―― 尾上 雅則 2011/05/18 「.NET開発者中心 厳選ブログ記事」シリーズでは、世界中にある膨大なブログ・コンテンツの中から、特にInsider.NET/.NET開発者中心の読者に有用だと考えられるブログ記事を編集部が発掘・厳選し、そのブログ記事を執筆したブロガーの許可の下、その全文を転載・翻訳しています。この活動により、.NET開発者のブログ文化の価値と質を高め、より一層の盛り上げに貢献することを目指しています。 MVVM(Model-View-ViewModel)パターンに関する知見があちこちに散らばっているように見えるので、そろそろまとめてみることにしました。この記事は、MVVMの基的な考え方・実装方法などを把握されて

  • WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 コードは MSDN コード ギャラリーからダウンロードできます。 オンラインでのコードの参照 目次 秩序と混乱 Model-View-ViewModel の進化 WPF 開発者に MVVM が好まれる理由 デモ アプリケーション 中継コマンド ロジック ViewModel クラス階層 ViewModelBase クラス CommandViewModel クラス MainWindowViewModel クラス ViewModel に View を適用する データ モデルとリポジトリ 新しい顧客のデータ入力フォーム All Customers ビュー まとめ 専門的なソフトウェア アプリケーションのユーザー イン

    WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン