<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C#</title><link>http://blogs.wankuma.com/mnow/category/463.aspx</link><description>C#</description><managingEditor>えムナウ</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>えムナウ</dc:creator><title>MvvmCross について 6</title><link>http://blogs.wankuma.com/mnow/archive/2015/05/06/515302.aspx</link><pubDate>Wed, 06 May 2015 22:59:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2015/05/06/515302.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/515302.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2015/05/06/515302.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/515302.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/515302.aspx</trackback:ping><description>&lt;p&gt;MvvmCross のクラスのは Mvx というプレフィックスが付いているのが一般的です。&lt;br&gt;ということは Mvx クラスは MvvmCross のなかでも特別なクラスという意味に見えます。&lt;br&gt;クラス生成・IoCコンテナサポート・トレースサポート・例外クラス生成を行っています。&lt;/p&gt; &lt;p&gt;名前空間 Cirrious.CrossCore&lt;br&gt;public static class Mvx &lt;p&gt;クラス図&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/8926417e009f_1372E/image.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://mnow.wankuma.com/blogimg/8926417e009f_1372E/image_thumb.png" width="696" height="535"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;クラス生成&lt;br&gt;public static T IocConstruct&amp;lt;T&amp;gt;()&lt;br&gt;public static object IocConstruct(Type t)&lt;/p&gt; &lt;p&gt;IoC コンテナ&lt;br&gt;public static void RegisterSingleton&lt;tinterface&gt;(Func&lt;tinterface&gt; serviceConstructor) &lt;br&gt;public static void RegisterSingleton(Type tInterface, Func &lt;object&gt; serviceConstructor)&lt;/object&gt;&lt;br&gt;public static void RegisterSingleton(Type tInterface, object service) &lt;br&gt;public static void ConstructAndRegisterSingleton&lt;tinterface , TType&gt;() &lt;br&gt;public static void LazyConstructAndRegisterSingleton&lt;tinterface , TType&gt;() &lt;br&gt;public static void LazyConstructAndRegisterSingleton&lt;tinterface&gt;(Func&lt;tinterface&gt; constructor) &lt;br&gt;public static void LazyConstructAndRegisterSingleton(Type type, Func&lt;object&gt; constructor)&lt;/object&gt;&lt;br&gt;public static void RegisterType&lt;tinterface , TType&gt;() &lt;br&gt;public static void RegisterType&lt;tinterface&gt;(Func&lt;tinterface&gt; constructor) &lt;br&gt;public static void RegisterType(Type type, Func&lt;object&gt; constructor)&lt;/object&gt;&lt;br&gt;public static void RegisterType(Type tInterface, Type tType)&lt;br&gt;public static bool CanResolve&amp;lt;TService&amp;gt;()&lt;br&gt;public static bool CanResolve(Type serviceType)&lt;br&gt;public static TService Resolve&amp;lt;TService&amp;gt;()&lt;br&gt;public static object Resolve(Type serviceType)&lt;br&gt;public static bool TryResolve&amp;lt;TService&amp;gt;(out TService service)&lt;br&gt;public static bool TryResolve(Type serviceType, out object service)&lt;br&gt;public static T Create&amp;lt;T&amp;gt;()&lt;br&gt;public static T GetSingleton&amp;lt;T&amp;gt;()&lt;/p&gt; &lt;p&gt;IoCコンテナ登録時実行&lt;br&gt;public static void CallbackWhenRegistered&amp;lt;T&amp;gt;(Action&amp;lt;T&amp;gt; action)&lt;br&gt;public static void CallbackWhenRegistered&amp;lt;T&amp;gt;(Action action)&lt;br&gt;public static void CallbackWhenRegistered(Type type, Action action)&lt;/p&gt; &lt;p&gt;トレース&lt;br&gt;public static void TaggedTrace(MvxTraceLevel level, string tag, string message, params object[] args)&lt;br&gt;public static void TaggedTrace(string tag, string message, params object[] args)&lt;br&gt;public static void TaggedWarning(string tag, string message, params object[] args)&lt;br&gt;public static void TaggedError(string tag, string message, params object[] args)&lt;br&gt;public static void Trace(MvxTraceLevel level, string message, params object[] args)&lt;br&gt;public static void Trace(string message, params object[] args)&lt;br&gt;public static void Warning(string message, params object[] args)&lt;br&gt;public static void Error(string message, params object[] args)&lt;/p&gt; &lt;p&gt;例外クラス生成&lt;br&gt;public static MvxException Exception(string message)&lt;br&gt;public static MvxException Exception(string message, params object[] args)&lt;br&gt;public static MvxException Exception(Exception innerException, string message, params object[] args)&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/515302.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>MvvmCross について 5</title><link>http://blogs.wankuma.com/mnow/archive/2015/04/25/513926.aspx</link><pubDate>Sat, 25 Apr 2015 22:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2015/04/25/513926.aspx</guid><description>&lt;p&gt;ViewModel の次は Command かなぁと、&lt;br&gt;INotifyPropertyChanged と ICommand を制すればMVVMは怖くないと。&lt;/p&gt; &lt;p&gt;名前空間 Cirrious.MvvmCross.ViewModels&lt;br&gt;public class MvxCommand : MvxCommandBase , IMvxCommand&lt;br&gt;public class MvxCommand&amp;lt;T&amp;gt; : MvxCommandBase , IMvxCommand&lt;br&gt;&lt;br&gt;クラス図&lt;br&gt;&lt;a href="http://mnow.wankuma.com/blogimg/MvvmCross--5_1340C/image.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://mnow.wankuma.com/blogimg/MvvmCross--5_1340C/image_thumb.png" width="737" height="542"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ICommandサポート&lt;br&gt;通常のよくあるコマンドでパラメータがあるのとないののパターンがあります。&lt;br&gt;特徴は IMvxCommandHelper がIocコンテナに定義があるかどうかで CanExecuteChanged が WeakReference かどうかを代えられます。&lt;br&gt;object parameter は string で渡しても Convert.ChangeType メソッド で可能な限り型変換してくれます。&lt;br&gt;public event EventHandler CanExecuteChanged;&lt;br&gt;public void RaiseCanExecuteChanged();&lt;br&gt;public MvxCommand(Action execute, Func&amp;lt;bool&amp;gt; canExecute);&lt;br&gt;public bool CanExecute(object parameter);&lt;br&gt;public void Execute(object parameter);&lt;br&gt;public bool CanExecute();&lt;br&gt;public void Execute();&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/513926.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>MvvmCross について 4</title><link>http://blogs.wankuma.com/mnow/archive/2015/04/24/513761.aspx</link><pubDate>Fri, 24 Apr 2015 05:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2015/04/24/513761.aspx</guid><description>&lt;p&gt;これからはよく使うクラスの説明をしていきたいと思う。&lt;/p&gt; &lt;p&gt;まずは MVVM と名がついているので ViewModel の基底クラス MvxViewModel から説明します。&lt;/p&gt; &lt;p&gt;名前空間 Cirrious.MvvmCross.ViewModels&lt;br&gt;public abstract class MvxViewModel : MvxNavigatingObject, IMvxViewModel&lt;/p&gt; &lt;p&gt;クラス図&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/MvvmCross--4_32A9/image.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://mnow.wankuma.com/blogimg/MvvmCross--4_32A9/image_thumb.png" width="702" height="568"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;abstract クラスで ViewModel で継承して使うように設計されている。&lt;/p&gt; &lt;p&gt;Dispatcher サポート&lt;br&gt;UIスレッドの Dispatcher をサポートしておりUIスレッドでのメソッド実行を行える。&lt;br&gt;protected IMvxMainThreadDispatcher Dispatcher;&lt;br&gt;protected void InvokeOnMainThread(Action action);&lt;/p&gt; &lt;p&gt;INotifyPropertyChanged サポート&lt;br&gt;ViewModel のプロパティが View に変更を通知する INotifyPropertyChanged をサポートする。&lt;br&gt;プロパティの set 時に使う SetProperty や イベントを発行する RaisePropertyChanged は当然ある。&lt;br&gt;RaisePropertyChanged をUIスレッドで常に実行するためのフラグや プロパティ名を string.Empty でイベントを発行すると全プロパティが変更されたとみなすよう促すメソッドもある。&lt;br&gt;ユニットテストのときなどイベントを発行されると邪魔な場合に抑止する機構もある。&lt;br&gt;public bool ShouldAlwaysRaiseInpcOnUserInterfaceThread();&lt;br&gt;public void ShouldAlwaysRaiseInpcOnUserInterfaceThread(bool value);&lt;br&gt;public void RaisePropertyChanged&amp;lt;T&amp;gt;(Expression&amp;lt;Func&amp;lt;T&amp;gt;&amp;gt; property);&lt;br&gt;public void RaisePropertyChanged([CallerMemberName] string whichProperty = "");&lt;br&gt;public virtual void RaiseAllPropertiesChanged();&lt;br&gt;public virtual void RaisePropertyChanged(PropertyChangedEventArgs changedArgs);&lt;br&gt;protected bool SetProperty&amp;lt;T&amp;gt;(ref T storage, T value, [CallerMemberName] string propertyName = null);&lt;br&gt;protected virtual MvxInpcInterceptionResult InterceptRaisePropertyChanged(PropertyChangedEventArgs changedArgs);&lt;/p&gt; &lt;p&gt;遷移サポート&lt;br&gt;IMvxViewDispatcher と連携して各プラットフォームの ViewDispatcher で遷移を実現している。&lt;br&gt;例えばストアアプリやWindows Phoneなどは Close 時に前ページに遷移するがWPFではワーニングのログを出力する。&lt;br&gt;ShowViewModel は各種パラメータ形態に対応しているが最終的に最後のメソッド呼び出す。&lt;br&gt;protected IMvxViewDispatcher ViewDispatcher;&lt;br&gt;protected bool Close(IMvxViewModel viewModel);&lt;br&gt;protected bool ChangePresentation(MvxPresentationHint hint);&lt;br&gt;protected bool ShowViewModel&amp;lt;TViewModel&amp;gt;(object parameterValuesObject,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMvxBundle presentationBundle = null,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MvxRequestedBy requestedBy = null);&lt;br&gt;protected bool ShowViewModel&amp;lt;TViewModel&amp;gt;(IDictionary&amp;lt;string, string&amp;gt; parameterValues,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMvxBundle presentationBundle = null,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MvxRequestedBy requestedBy = null);&lt;br&gt;protected bool ShowViewModel&amp;lt;TViewModel&amp;gt;(IMvxBundle parameterBundle = null,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMvxBundle presentationBundle = null,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MvxRequestedBy requestedBy = null);&lt;br&gt;protected bool ShowViewModel(Type viewModelType,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object parameterValuesObject,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMvxBundle presentationBundle = null,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MvxRequestedBy requestedBy = null);&lt;br&gt;protected bool ShowViewModel(Type viewModelType,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDictionary&amp;lt;string, string&amp;gt; parameterValues,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMvxBundle presentationBundle = null,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MvxRequestedBy requestedBy = null);&lt;br&gt;protected bool ShowViewModel(Type viewModelType,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMvxBundle parameterBundle = null,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMvxBundle presentationBundle = null,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MvxRequestedBy requestedBy = null);&lt;br&gt;private bool ShowViewModelImpl(Type viewModelType, IMvxBundle parameterBundle, IMvxBundle presentationBundle,MvxRequestedBy requestedBy);&lt;/p&gt; &lt;p&gt;ViwModelサポート&lt;br&gt;ViewModel の開始時や終了時には、virtual で修飾されたメソッドが呼ばれるので override して適切な処理を行える。&lt;br&gt;遷移のShowViewModelで指定した parameterBundle や requestedBy が取得できる。&lt;br&gt;ReloadFromBundle や SaveStateToBundle では中断・再開時に記憶しておく情報を利用できる。&lt;br&gt;public MvxRequestedBy RequestedBy { get; set; };&lt;br&gt;public void Init(IMvxBundle parameters);&lt;br&gt;public void ReloadState(IMvxBundle state);&lt;br&gt;public void SaveState(IMvxBundle state);&lt;br&gt;public virtual void Start();&lt;br&gt;protected virtual void InitFromBundle(IMvxBundle parameters);&lt;br&gt;protected virtual void ReloadFromBundle(IMvxBundle state);&lt;br&gt;protected virtual void SaveStateToBundle(IMvxBundle bundle);&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/513761.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>MvvmCross について 3</title><link>http://blogs.wankuma.com/mnow/archive/2015/04/20/513577.aspx</link><pubDate>Mon, 20 Apr 2015 07:48:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2015/04/20/513577.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/513577.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2015/04/20/513577.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/513577.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/513577.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/mnow/archive/2015/04/18/513537.aspx"&gt;MvvmCross について 2&lt;/a&gt; で作成したソリューションに、WPFとストアアプリのプロジェクトを追加して、&lt;br&gt;.Core のプロジェクト参照を追加し、&lt;br&gt;NuGet から MVVM Cross Hot Tuna Starter Pack を入れる。&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/MvvmCross--3_6511/image.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://mnow.wankuma.com/blogimg/MvvmCross--3_6511/image_thumb.png" width="329" height="235"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Windows Phone は 8.1 から Windows 8.1のWinRT と 従来の Sliverlight 8.1 に開発環境が分離している。&lt;/p&gt; &lt;p&gt;Windows Phone 8.1のWinRT プロジェクトも追加してNuGet から MVVM Cross Hot Tuna Starter Pack を入れる。&lt;/p&gt; &lt;p&gt;Windows Phone 8.0 のプロジェクトのプロパティから Sliverlight 8.1 に更新する。&lt;/p&gt; &lt;p&gt;更新すると MVVM Cross の環境も変わるのか NuGet から 一度削除して MVVM Cross Hot Tuna Starter Pack を入れなおさなければいけない場合もあった。&lt;/p&gt; &lt;p&gt;これで今回説明する基本となるソリューションができる。&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/MvvmCross--3_6511/image_3.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://mnow.wankuma.com/blogimg/MvvmCross--3_6511/image_thumb_3.png" width="402" height="248"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/513577.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>MvvmCross について 2</title><link>http://blogs.wankuma.com/mnow/archive/2015/04/18/513537.aspx</link><pubDate>Sat, 18 Apr 2015 20:17:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2015/04/18/513537.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/513537.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2015/04/18/513537.aspx#Feedback</comments><slash:comments>185</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/513537.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/513537.aspx</trackback:ping><description>&lt;p&gt;用意しておく &lt;p&gt;Visual Studio 2013 Update4 &lt;p&gt;Mac &lt;p&gt;Xamarin ライセンス &lt;p&gt;Mac 開発者ID &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;br&gt;Xamarin のインストール &lt;p&gt;Xamarin をインストールして有効化 &lt;p&gt;&lt;a href="http://www.xlsoft.com/jp/products/xamarin/xamarin_android_win_installation.html"&gt;http://&lt;/a&gt;&lt;a href="http://www.xlsoft.com/jp/products/xamarin/xamarin_android_win_installation.html"&gt;www.xlsoft.com/jp/products/xamarin/xamarin_android_win_installation.html&lt;/a&gt; &lt;p&gt;&lt;a href="http://www.xlsoft.com/jp/products/xamarin/xamarin_ios_win_installation.html"&gt;http://&lt;/a&gt;&lt;a href="http://www.xlsoft.com/jp/products/xamarin/xamarin_ios_win_installation.html"&gt;www.xlsoft.com/jp/products/xamarin/xamarin_ios_win_installation.html&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;ソリューションを作る &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/MvvmCross--2_11BAD/image.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://mnow.wankuma.com/blogimg/MvvmCross--2_11BAD/image_thumb.png" width="622" height="466"&gt;&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;各プロジェクトに NuGet から MVVM Cross Hot Tuna Starter Pack を入れる &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/MvvmCross--2_11BAD/image_3.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://mnow.wankuma.com/blogimg/MvvmCross--2_11BAD/image_thumb_3.png" width="746" height="424"&gt;&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;ソリューションルート（App）の名前空間などをApp.Core のように .Core を追加する&lt;br&gt;（Xamarinはソリューション名で作るけどMvvmCrossは.Coreがデフォルトな為） &lt;p&gt;ToDo-MvvmCross の通りにソースを修正する &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/MvvmCross--2_11BAD/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://mnow.wankuma.com/blogimg/MvvmCross--2_11BAD/image_thumb_4.png" width="257" height="652"&gt;&lt;/a&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/513537.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>MvvmCross について 1</title><link>http://blogs.wankuma.com/mnow/archive/2015/04/18/513530.aspx</link><pubDate>Sat, 18 Apr 2015 13:39:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2015/04/18/513530.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/513530.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2015/04/18/513530.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/513530.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/513530.aspx</trackback:ping><description>&lt;p&gt;最近よく MVVM Cross を使っているので書いておこうと思う。&lt;br&gt;まず一番使っているのは ストアアプリ 次に WPF なので一般の MVVM Cross 利用者とは違う使い方だというのは認識しているが、共通点もあると思う。&lt;/p&gt; &lt;p&gt;まずは基礎的な内容から。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;MvvmCrossとは &lt;p&gt;Xamarin で iOSやAndrodといったプラットフォームにも対応していて、Windows Phoneや Windows Store App や WPF も対応しているMVVMライブラリ &lt;p&gt;PCL( Portable Class Library ) として作成することで全プラットフォーム共通の ViewModel (および Model) クラスを作成する &lt;p&gt;MS-PL ライセンス &lt;p&gt;GtiHubで公開 &lt;p&gt;&amp;nbsp; &lt;p&gt;MVVMとは &lt;p&gt;イベント駆動開発のコードビハインドの保守性や疎結合性を高めるためにコードビハインドをViewModelに分離したもの。 &lt;p&gt;イベントやプロパティのかわりにコマンドやバインディングしたプロパティを使う。 &lt;p&gt;&amp;nbsp; &lt;p&gt;PCL( Portable Class Library ) とは &lt;p&gt;汎用性のあるクラス ライブラリ &lt;p&gt;複数の .NET Framework プラットフォームで動作するマネージアセンブリを作成してビルド &lt;p&gt;共有ビジネスロジックなど、多数のプロジェクトで共有するコードを含むクラスを作成し、そのクラスを異なる種類のプロジェクトから参照 &lt;p&gt;変更することなく 各種プラットフォームで動作する、汎用的なアセンブリを作成 &lt;img src ="http://blogs.wankuma.com/mnow/aggbug/513530.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>2014/10/18 わんくま東京の予定</title><link>http://blogs.wankuma.com/mnow/archive/2014/08/13/391768.aspx</link><pubDate>Wed, 13 Aug 2014 23:51:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2014/08/13/391768.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/391768.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2014/08/13/391768.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/391768.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/391768.aspx</trackback:ping><description>&lt;p&gt;速報なので細かいセッション内容は決まっていません。 &lt;p&gt;&amp;nbsp; &lt;p&gt;今回は Xamarin Day です。 &lt;p&gt;C# で iOS、Android、Mac アプリを簡単に開発できる夢のプラットフォーム開発環境。 &lt;p&gt;慣れ親しんだ VisualStudio や フル機能を持つ Xamarin Studio で開発できます。&lt;br&gt;まる１日 Xamarin のセッションをいち早くお届けできるのもわんくま東京ならではです。 &lt;p&gt;&amp;nbsp; &lt;p&gt;・ 10:40 ～ 11:00　開場・受付開始 &lt;p&gt;・ 11:00 ～ 11:10　わんくまについて &lt;p&gt;・ 11:10 ～ 12:00　「」 by エクセルソフト田淵さん &lt;p&gt;・ 12:00 ～ 13:00　おひるごはん  &lt;p&gt;・ 13:00 ～ 13:30　ライトニングトーク &lt;p&gt;・ 募集中 &lt;p&gt;・ 募集中 &lt;p&gt;・ 13:40 ～ 14:30　「」 by 黒柳さん &lt;p&gt;・ 14:40 ～ 15:30　「」 by 初音さん &lt;p&gt;・ 15:40 ～ 16:30　「」 by &lt;a href="http://"&gt;えムナウ&lt;/a&gt; &lt;p&gt;・ 17:00 ～ 懇親会 &lt;img src ="http://blogs.wankuma.com/mnow/aggbug/391768.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>TEST</title><link>http://blogs.wankuma.com/mnow/archive/2014/08/13/391767.aspx</link><pubDate>Wed, 13 Aug 2014 23:45:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2014/08/13/391767.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/391767.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2014/08/13/391767.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/391767.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/391767.aspx</trackback:ping><description>&lt;p&gt;久々なのでTEST投稿です。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/391767.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>Windows8 グリッドアプリケーションを解析する－その１</title><link>http://blogs.wankuma.com/mnow/archive/2013/01/10/311378.aspx</link><pubDate>Thu, 10 Jan 2013 13:48:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/01/10/311378.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/311378.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/01/10/311378.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/311378.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/311378.aspx</trackback:ping><description>&lt;p&gt;Windows8のWindowsストアアプリの新しいプロジェクトにグリッドアプリケーションがある。&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/6e438f2853f3_B0EE/screenshot_creategridproject.png"&gt;&lt;img width="644" height="446" title="screenshot_creategridproject" style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="screenshot_creategridproject" src="http://mnow.wankuma.com/blogimg/6e438f2853f3_B0EE/screenshot_creategridproject_thumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Viewは3層からなっている。&lt;/p&gt; &lt;p&gt;グループ一覧－グループ詳細－アイテム詳細である。&lt;/p&gt; &lt;p&gt;Windows8の標準アプリの「ストア」「ニュース」と同じ構造である。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;グループ一覧は全グループがグループごとにアイテムの画像・タイトル・サブタイトルの簡単な情報がGridViewで表示される。&lt;/p&gt; &lt;p&gt;グループタイトルをタップするとグループ詳細に、アイテムの画像・タイトル・サブタイトルをタップするとアイテム詳細に遷移する。&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/6e438f2853f3_B0EE/screenshot_01102013_122722.png"&gt;&lt;img width="644" height="364" title="screenshot_01102013_122722" style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="screenshot_01102013_122722" src="http://mnow.wankuma.com/blogimg/6e438f2853f3_B0EE/screenshot_01102013_122722_thumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;グループ詳細は1グループのグループタイトル・サブタイトル・画像・説明とグループ内のアイテムのタイトル・サブタイトル・画像・説明（長いと一部表示されて残りは省略される）がGridViewで表示される。&lt;/p&gt; &lt;p&gt;アイテムをタップするとアイテム詳細に遷移する。戻るボタンで元のグループ一覧に戻る。&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/6e438f2853f3_B0EE/screenshot_01102013_122737.png"&gt;&lt;img width="644" height="364" title="screenshot_01102013_122737" style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="screenshot_01102013_122737" src="http://mnow.wankuma.com/blogimg/6e438f2853f3_B0EE/screenshot_01102013_122737_thumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;アイテム詳細はグループタイトルとアイテムのタイトル・サブタイトル・画像・説明がFlipViewの中のScrollViewerで表示される。&lt;/p&gt; &lt;p&gt;FlipViewで同じグループ内のアイテムに遷移する。戻るボタンで元のグループ一覧やグループ詳細に戻る。&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/6e438f2853f3_B0EE/screenshot_01102013_122749.png"&gt;&lt;img width="644" height="364" title="screenshot_01102013_122749" style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="screenshot_01102013_122749" src="http://mnow.wankuma.com/blogimg/6e438f2853f3_B0EE/screenshot_01102013_122749_thumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ViewはGridViewやFlipViewやScrollViewerの知識が必要である。&lt;/p&gt; &lt;p&gt;また、アプリケーションのビューステートで画面の構造が変わるのでアプリケーションのビューステートの知識も必要である。&lt;/p&gt; &lt;p&gt;Windows8 グリッドアプリケーションのクラス構造を解析することを主眼としているのでコントロールやビューステートの説明はしない。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;次回はView関係のクラス図を使って各クラスの解析を行う。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/311378.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>わかりやすい MVPVM を実践するために</title><link>http://blogs.wankuma.com/mnow/archive/2012/06/18/278327.aspx</link><pubDate>Mon, 18 Jun 2012 00:17:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2012/06/18/278327.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/278327.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2012/06/18/278327.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/278327.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/278327.aspx</trackback:ping><description>&lt;p&gt;私の提唱する MVPVM パターンの目的は View と ViewModel の密結合を減らすことにあります。&lt;/p&gt; &lt;p&gt;サンプルは以下のページの Community Open Day 2012 TwitterSample を参照してください。&lt;br&gt;&lt;a title="http://www.mnow.jp/tabid/220/Default.aspx" href="http://www.mnow.jp/tabid/220/Default.aspx"&gt;http://www.mnow.jp/tabid/220/Default.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;実装における注意点は以下の通りです。&lt;/p&gt; &lt;p&gt;MVVMパターンからの変更点&lt;/p&gt;View&lt;br&gt; &lt;p&gt;１）ViewModelからメッセンジャーの通信を受けてビヘイビアを起動する処理を書かない。&lt;br&gt;　Commandの処理はPresenterが行うのでViewを直接操作できる。&lt;/p&gt; &lt;p&gt;2)DataTemplate の DataType は利用するが、DataTemplateSelector は利用しない。&lt;br&gt;　ViewModel の派生クラスを使えば DataTemplateSelector を使わずに DataTemplate の DataType で識別できる。&lt;/p&gt; &lt;p&gt;ViewModel&lt;/p&gt; &lt;p&gt;1)Commandの処理を書かない。&lt;br&gt;　Commandの処理はPresenterが行う。&lt;/p&gt; &lt;p&gt;2)ViewModel は Command も含め、プロパティを View に提供することが主処理となる。&lt;/p&gt; &lt;p&gt;3)コンストラクタ・終了処理は今までの通り書いていいがイベントは生成しない。&lt;/p&gt; &lt;p&gt;4)View と ViewModel 間で完結する入力検証は行っていい。&lt;/p&gt; &lt;p&gt;5)ソート・絞り込みなど ViewModel 内部で完結するデータ操作は行っていい。&lt;/p&gt; &lt;p&gt;Application&lt;/p&gt; &lt;p&gt;1)初期に起動する Presenter を決め プレゼンテーションロジックを書かない。&lt;br&gt;　プレゼンテーションロジックは Presenter に含む。&lt;/p&gt; &lt;p&gt;2)初期に起動する Presenter の初期処理と終了処理を行う。&lt;/p&gt; &lt;p&gt;Presenter&lt;/p&gt; &lt;p&gt;1)ViewModel の Command を上書きして Command の処理を行う。&lt;/p&gt; &lt;p&gt;2)描画時には Model のデータを取得して ViewModel に設定する。&lt;/p&gt; &lt;p&gt;3)Command の処理で Model を更新し、ViewModel を更新する。&lt;/p&gt; &lt;p&gt;4)子供の Presenter の初期処理と終了処理を行い、描画を指示する。ダイアログは終了をまつ。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;注意点は一応以上ですが順次追加するかもしれません。&lt;br&gt;上記 MVVM からの変更点を見ながらサンプルソースを眺めてみてください。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/278327.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>