<?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>えムナウ Blog</title><link>http://blogs.wankuma.com/mnow/</link><description>えムナウ の なすがまま</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>謹賀新年</title><link>http://blogs.wankuma.com/mnow/archive/2015/01/01/500431.aspx</link><pubDate>Thu, 01 Jan 2015 00:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2015/01/01/500431.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/500431.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2015/01/01/500431.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/500431.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/500431.aspx</trackback:ping><description>&lt;p&gt;新年あけましておめでとうございます。&lt;/p&gt; &lt;p&gt;今回はMVP受賞がかないませんでした。&lt;br&gt;仕事が中心となってしまったからとか色々と理由はあると思いますが、&lt;br&gt;2005年1月から2014年12月まで10年間ありがとうございました。&lt;/p&gt; &lt;p&gt;そうは言っても私自身が変わるわけでもありません。&lt;br&gt;2004年6月にAILightさん の Blog「えムナウ の ありのまま」からコミュニティデビューは始まりました。&lt;br&gt;「えムナウ の なずがまま」「えムナウ の とどけもの」と進化していきました。&lt;br&gt;「ありのままのじぶんになるの」というわけで初心にもどります。&lt;/p&gt; &lt;p&gt;よりいっそう自己の研鑽とコミュニティ発展の協力に努めるよう頑張ります。&lt;br&gt;これからはMicrosoftにこだわらずいろんな分野にでしゃばっていきたいです。&lt;br&gt;これからも変わらずよろしくお願いいたします。 &lt;/p&gt; &lt;p&gt;P.S.&lt;br&gt;森進一の「年上の人」が「ダメ～ヨ、ダメダメ」の元祖だって、よく気が付いた人がいたね。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/500431.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>ストアアプリはMVPVM パターンで開発しよう　PPTとサンプルソース</title><link>http://blogs.wankuma.com/mnow/archive/2013/08/06/328050.aspx</link><pubDate>Tue, 06 Aug 2013 01:08:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/08/06/328050.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/328050.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/08/06/328050.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/328050.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/328050.aspx</trackback:ping><description>&lt;p&gt;わんくま同盟 東京勉強会 #84 &lt;/p&gt; &lt;p&gt;「ストアアプリはMVPVM パターンで開発しよう」&lt;/p&gt; &lt;p&gt;ストアアプリは現在Blendでビヘイビアが使えません。&lt;br&gt;MVVMの構築にも苦労されているかあきらめていると思います。&lt;br&gt;ストアアプリのGridパターンはViewも特別なLayoutAwarePageから継承します。&lt;br&gt;ナビゲーションをおもに行うPresenterが威力を発揮する環境です。&lt;br&gt;ストアアプリのMVPVM パターンを見てみましょう。  &lt;p&gt;PPTとサンプルソースを以下のページの一番下にUPしました。 &lt;p&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;img src ="http://blogs.wankuma.com/mnow/aggbug/328050.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>わんくま同盟 東京勉強会 #84</title><link>http://blogs.wankuma.com/mnow/archive/2013/07/31/328035.aspx</link><pubDate>Wed, 31 Jul 2013 18:26:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/07/31/328035.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/328035.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/07/31/328035.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/328035.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/328035.aspx</trackback:ping><description>&lt;p&gt;わんくま同盟 東京勉強会 #84 &lt;br&gt;メンバーも内容も濃いですよ。&lt;br&gt;今すぐ登録しましょう。&lt;br&gt;2013/08/03 10:40-17:30&lt;br&gt;?10:40 ～ 11:00　開場・受付開始&lt;br&gt;?11:00 ～ 11:10　わんくまについて&lt;br&gt;?11:10 ～ 12:00　「Kinect 深度情報処理入門」 by 暁 紫電 Lv.1くまー&lt;br&gt;?12:00 ～ 13:00　おひるごはん &lt;br&gt;?13:00 ～ 13:30　ライトニングトーク&lt;br&gt;?13:40 ～ 14:30　「ASP.NET MVCをいまさらやってみよう！」 by 中 Lv.1くまー&lt;br&gt;?14:40 ～ 15:30　「開発者も、そろそろ PowerShell はじめてもいいんじゃない？」 by マイクロソフト安納さん Lv.1くまー&lt;br&gt;?15:40 ～ 16:30　「グリッドアプリのテンプレートについて」 by 荒井　省三さん Lv.3くまー&lt;br&gt;?16:40 ～ 17:30　「ストアアプリはMVPVM パターンで開発しよう」 by えムナウ Lv.2くまー&lt;br&gt;?18:00 ～ 懇親会&lt;br&gt;&lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.wankuma.com%2Fseminar%2F20130803tokyo84%2F&amp;amp;h=rAQHVXi3TAQHBsihm0wMKHJwnozgyd_4A904t1lEiWD6K8A&amp;amp;s=1"&gt;http://www.wankuma.com/seminar/20130803tokyo84/&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/328035.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>WPF と GIFアニメ</title><link>http://blogs.wankuma.com/mnow/archive/2013/05/30/327913.aspx</link><pubDate>Thu, 30 May 2013 14:06:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/05/30/327913.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/327913.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/05/30/327913.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/327913.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/327913.aspx</trackback:ping><description>&lt;p&gt;WPFでGIFアニメを表示するとなると、GDI+に逃げてSystem.Drawingを使う例がほとんどです。&lt;/p&gt; &lt;p&gt;いばらの道ですがBitmapDecoderを使ってMetaDataを取得することにより各フレームの画像と必要な情報を取得することができます。&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;FileStream&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; imageFileStrm = &lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;FileStream&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;(&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#a31515"&gt;"./Resources/GifAnime.gif"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&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; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;FileMode&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;.Open, &lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;FileAccess&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;.Read, &lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;FileShare&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;.Read);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;BitmapDecoder&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; decoder = &lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;BitmapDecoder&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;.Create(imageFileStrm,&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&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; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;BitmapCreateOptions&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;.PreservePixelFormat,&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&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; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;BitmapCacheOption&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;.Default);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;BitmapMetadata&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; metadata = (&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#2b91af"&gt;BitmapMetadata&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;)decoder.Frames[0].Metadata;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; top = metadata.GetQuery(&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#a31515"&gt;"/imgdesc/Top"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; left = metadata.GetQuery(&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#a31515"&gt;"/imgdesc/Left"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; width = metadata.GetQuery(&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#a31515"&gt;"/imgdesc/Width"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; height = metadata.GetQuery(&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#a31515"&gt;"/imgdesc/Height"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; delay = metadata.GetQuery(&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#a31515"&gt;"/grctlext/Delay"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; transparencyFlag = metadata.GetQuery(&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#a31515"&gt;"/grctlext/TransparencyFlag"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt; transparentColorIndex = metadata.GetQuery(&lt;/span&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font color="#a31515"&gt;"/grctlext/TransparentColorIndex"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font style="font-size: 9.5pt"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 9.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt"&gt;image.Source = decoder.Frames[0];&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font face="ＭＳ ゴシック"&gt;ここから先もまだ長いのですが、この方法を応用したライブラリが既にあります。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font face="ＭＳ ゴシック"&gt;理屈は抑えておくとソースもダウンロードできるし安心してライブラリを使えます。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-hansi-font-family: century; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'ＭＳ ゴシック'; mso-highlight: white; mso-font-kerning: 0pt"&gt;&lt;font face="ＭＳ ゴシック"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;WPF Animated GIF&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0mm 0mm 0pt; text-autospace: ; mso-layout-grid-align: none" align="left"&gt;&lt;a title="http://wpfanimatedgif.codeplex.com/" href="http://wpfanimatedgif.codeplex.com/"&gt;http://wpfanimatedgif.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/327913.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>わんくま同盟 東京勉強会 #81 あり得ないくらい豪華なスピーカ陣です。</title><link>http://blogs.wankuma.com/mnow/archive/2013/04/05/325957.aspx</link><pubDate>Fri, 05 Apr 2013 15:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/04/05/325957.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/325957.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/04/05/325957.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/325957.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/325957.aspx</trackback:ping><description>&lt;p&gt;わんくま東京 あり得ないくらい豪華なスピーカ陣です。&lt;br&gt;2013/04/13 10:40-17:30&lt;br&gt;&lt;a href="http://www.wankuma.com/seminar/20130413tokyo81/"&gt;http://www.wankuma.com/seminar/20130413tokyo81/&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;寒かった冬も終わり暖かくなり勉強会日和となってきました。&lt;br&gt;今回はマイクロソフトの赤間さんとMicrosoft Certified Architectの福井さんを迎えて、&lt;br&gt;脇をεπιστημηとえムナウで固める豪華で鉄壁な布陣でお届けします。&lt;br&gt;内容も基本的なことにちょっと高度なことも混じる初心者から上級者まで満足いただけるものになると思います。&lt;br&gt;ぜひ新入社員もさそってわんくま勉強会に来てみませんか？ &lt;p&gt;ハッシュ表のからくり by επιστημη &lt;br&gt;ウォータフォール型開発プロセス・再入門 赤間 信幸さん&lt;br&gt;セッションタイトル：Ask the MCA vol.2。 開発者のお悩みに答えます。 福井 厚さん &lt;br&gt;ソフトウェア開発の過去とC#の未来 えムナウ&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/325957.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>RIA アーキテクチャー研究会 第5回 セミナー</title><link>http://blogs.wankuma.com/mnow/archive/2013/02/10/314355.aspx</link><pubDate>Sun, 10 Feb 2013 18:03:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/02/10/314355.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/314355.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/02/10/314355.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/314355.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/314355.aspx</trackback:ping><description>&lt;p&gt;RIA アーキテクチャー研究会 第5回 セミナーやります。ぜひ来てくださいね。 &lt;p&gt;2013/03/16 (土) 12:00 日本マイクロソフト株式会社 31F セミナールームA &lt;p&gt;&lt;a title="http://atnd.org/event/E0012677" href="http://atnd.org/event/E0012677"&gt;http://atnd.org/event/E0012677&lt;/a&gt; &lt;p&gt;12:30～13:00　受付 &lt;p&gt;13:00～14:00　大田一希さん（@okazuki）Blendの便利機能振り返り &lt;p&gt;14:00～14:10　休憩 &lt;p&gt;14:10～15:10　尾上 雅則さん（@ugaya40）とあるソフトウェアアーキテクチャ設計の筋道 &lt;p&gt;15:10～15:20　休憩 &lt;p&gt;15:20～16:20　鈴木 章太郎さん（@shosuz）　XAML /C# を使った Windows ストアアプリ（LOB）構築 TIPS&lt;br&gt; - Prism 4.5 &amp;amp; Kona Project 等のご紹介 -&amp;nbsp; &lt;p&gt;16:20～16:30　休憩 &lt;p&gt;16:30～17:30　児玉宏之（@mnow）WindowsストアアプリでのMVVM・MVPVMパターン&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/314355.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/12/311996.aspx</link><pubDate>Sat, 12 Jan 2013 22:39:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/01/12/311996.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/311996.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/01/12/311996.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/311996.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/311996.aspx</trackback:ping><description>&lt;p&gt;前の記事はこちら。 &lt;p&gt;&lt;a href="http://blogs.wankuma.com/mnow/archive/2013/01/10/311378.aspx"&gt;Windows8 グリッドアプリケーションを解析する－その１&lt;/a&gt; &lt;p&gt;&lt;a href="http://blogs.wankuma.com/mnow/archive/2013/01/10/311485.aspx"&gt;Windows8 グリッドアプリケーションを解析する－その２&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;グリッドアプリケーションを作ってView関係のクラス図を作った。 &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/8872ead2651d_12DFC/ViewClasses.png"&gt;&lt;img title="ViewClasses" 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="ViewClasses" src="http://mnow.wankuma.com/blogimg/8872ead2651d_12DFC/ViewClasses_thumb.png" width="815" height="701"&gt;&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;LayoutAwarePage クラス &lt;p&gt;アプリケーションのビューステートと表示状態のマップ、GoBack、GoForward、GoHome、ナビゲーション用のマウスおよびキーボードのショートカット、ナビゲーションの状態管理およびプロセス継続時間管理、ディクショナリー型ビュー モデル、を実装した各ページの基底クラスである。 &lt;p&gt;&amp;nbsp; &lt;p&gt;コンストラクタ &lt;p&gt;ディクショナリー型ビュー モデルの初期化、Loaded イベント・Unloaded イベントの作成を行い、Loaded イベントでは StartLayoutUpdates、ナビゲーション用のマウスおよびキーボードのショートカット用のイベントの登録が行われる、Unloaded イベントでは StopLayoutUpdates、ナビゲーション用のマウスおよびキーボードのショートカット用のイベントの削除が行われる。 &lt;p&gt;&amp;nbsp; &lt;p&gt;アプリケーションのビューステートと表示状態のマップ &lt;p&gt;StartLayoutUpdates　Loaded イベントから呼び出されるのでPageでは直接呼び出す必要はない、ページ内のコントロールで必要があればLoaded イベントから呼び出す、ApplicationView.Valueを表示状態とする、初回呼び出しだけSizeChangedイベントの登録を行う。 &lt;p&gt;SizeChangedイベントは InvalidateVisualState　を呼ぶ。 &lt;p&gt;StopLayoutUpdates　Unloaded イベントから呼び出されるのでPageでは直接呼び出す必要はない、ページ内のコントロールで必要があればUnloaded イベントから呼び出す、StartLayoutUpdates　を呼び出した全てのコントロールがStopLayoutUpdatesを呼び出したらSizeChangedイベントの削除を行う。 &lt;p&gt;InvalidateVisualState　StartLayoutUpdates　を呼び出した全てのコントロールに対しApplicationView.Valueを表示状態として反映する。 &lt;p&gt;&amp;nbsp; &lt;p&gt;GoBack、GoForward、GoHome &lt;p&gt;Frame に対して GoBack、GoForward、GoHome を実行する。 GoHome は可能な回数分Frame.GoBackを実行して実装される。 &lt;p&gt;&amp;nbsp; &lt;p&gt;ナビゲーション用のマウスおよびキーボードのショートカット &lt;p&gt;AcceleratorKeyActivated イベントハンドラ&lt;br&gt;前に戻るキーまたは Alt キーを押しながら左方向キーを押すと前に戻り、次に進むキーまたは Alt キーを押しながら右方向キーを押すと次に進む。&lt;/p&gt; &lt;p&gt;PointerPressed　イベントハンドラ&lt;br&gt;マウスの[戻る] を押すと前に戻り、 [進む] を押すと次に進む。&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;ナビゲーションの状態管理およびプロセス継続時間管理 &lt;p&gt;OnNavigatedTo　&lt;br&gt;フレームに表示されるときに呼び出される。&lt;br&gt;１）NavigationEventArgs の NavigationMode が NavigationMode.New の場合、次に進むナビゲーションをクリアする。&lt;br&gt;２）LoadState を NavigationEventArgs の Parameter と 前のセッションでこのページによって保存された状態のディクショナリ（NavigationMode.New の場合null） をパラメータに呼び出す。&lt;/p&gt; &lt;p&gt;OnNavigatedFrom&lt;br&gt;フレームに表示されなくなるときに呼び出される。&lt;br&gt;１）SaveState を 初期化された Dictionary&amp;lt;String, Object&amp;gt; をパラメータに呼び出す。&lt;br&gt;２）保存された状態のディクショナリに格納する。 &lt;p&gt;LoadState / SaveState &lt;br&gt;protected virtual の実装になっているのでアプリケーションが中断後に終了しまた表示される場合に復元したいViewModelの情報を登録・復元する必要がある。 &lt;p&gt;&amp;nbsp; &lt;p&gt;ディクショナリー型ビュー モデル &lt;p&gt;DefaultViewModel　IObservableMap&amp;lt;String, Object&amp;gt;型の文字列とバインドするデータが組になった ViewModel である。　Dictionary に変更があったら MapChangedEventHandler&amp;lt;K, V&amp;gt; MapChanged イベントを発行する。INotifyPropertyChanged や INotifyCollectionChanged は発行しないのでバインドするデータ側で用意する必要がある。 &lt;p&gt;&amp;nbsp; &lt;p&gt;次回は各 View の実装について解析する。 &lt;img src ="http://blogs.wankuma.com/mnow/aggbug/311996.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/311485.aspx</link><pubDate>Thu, 10 Jan 2013 17:54:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/01/10/311485.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/311485.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/01/10/311485.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/311485.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/311485.aspx</trackback:ping><description>&lt;p&gt;前の記事はこちら。&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.wankuma.com/mnow/archive/2013/01/10/311378.aspx" target="_blank"&gt;Windows8 グリッドアプリケーションを解析する－その１&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;グリッドアプリケーションを作ってView関係のクラス図を作った。&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/Windows8-_DF6C/ViewClasses.png"&gt;&lt;img title="ViewClasses" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; padding-right: 0px" border="0" alt="ViewClasses" src="http://mnow.wankuma.com/blogimg/Windows8-_DF6C/ViewClasses_thumb.png" width="815" height="701"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Appクラス&lt;/p&gt; &lt;p&gt;App.xaml はりソースのマージとアプリケーション名の記述がある。&lt;/p&gt; &lt;p&gt;OnLaunched はアプリケーション起動時の処理で、LaunchActivatedEventArgs にどの様な遷移で起動されたか、前回の実行状態、実行引数などが入っている。&lt;/p&gt; &lt;p&gt;　実装は初期ナビゲーションである。ナビゲーションは Frame を使いFrameの中身を変えることによって遷移する。&lt;/p&gt; &lt;p&gt;　１）Window.Current.Content が null なら Frame を作成し、前回のアプリケーションが中断後に終了されていたら保存されたセッション状態を復元（SuspensionManager.RestoreAsync）してから、Frame を Window.Current.Content に格納する。&lt;/p&gt; &lt;p&gt;　２）Frame の Content がない場合、Frame.Navigate で GroupedItemsPage をロードする。&lt;/p&gt; &lt;p&gt;　３）Window.Current.Activate で Frame を Active にする。&lt;/p&gt; &lt;p&gt;OnSuspending はアプリケーション中断時の処理で、SuspendingEventArgs に中断要求の情報が入っている。&lt;/p&gt; &lt;p&gt;　実装は中断動作を遅延要求し、セッション状態を保存（SuspensionManager.SaveAsync）してから、中断動作の完了を通知する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;SuspensionManagerクラス&lt;/p&gt; &lt;p&gt;グローバル セッション状態をキャプチャし、アプリケーションのプロセス継続時間管理を簡略化する目的のクラスである。&lt;/p&gt; &lt;p&gt;Dictionary&amp;lt;string, object&amp;gt; SessionState のセッション状態を持っている。&lt;/p&gt; &lt;p&gt;List&amp;lt;Type&amp;gt; KnownType は、DataContractSerializer で使用する、_sessionState.xml にシリアライズする時に存在可能な型を列挙する。&lt;/p&gt; &lt;p&gt;RegisterFrame は、Frame を一意なキーを付けて登録する。&lt;/p&gt; &lt;p&gt;UnregisterFrame はFrame の登録を削除する。&lt;/p&gt; &lt;p&gt;SaveAsync は、全Frameのセッション状態をローカルフォルダ（ApplicationData.Current.LocalFolder.CreateFileAsync）の _sessionState.xml に保存する、&lt;br&gt;ローカルフォルダは c:\Users\ユーザー名\AppData\Local\Packages\パッケージID_公開キー\LocalState に存在する、&lt;br&gt;パッケージIDはPackage.appxmanifestに存在する、公開キーはアプリケーションの厳密名の最後につけられるものと同じである。&lt;/p&gt; &lt;p&gt;RestoreAsync は、全Frameのセッション状態をローカルフォルダ（ApplicationData.Current.LocalFolder.GetFileAsync）の _sessionState.xml から復元する。&lt;/p&gt; &lt;p&gt;SessionStateForFrame は、指定した Frame のセッション状態を取得する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;次回は各 View の基底クラスとなる LayoutAwarePage について解析する。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/311485.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>Windows ストア アプリの開発者 が気を付けること</title><link>http://blogs.wankuma.com/mnow/archive/2013/01/09/311277.aspx</link><pubDate>Wed, 09 Jan 2013 13:57:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/01/09/311277.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/311277.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/01/09/311277.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/311277.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/311277.aspx</trackback:ping><description>&lt;p&gt;わんくま同盟東京勉強会第76回の「Windows ストア アプリの開発者 が気を付けること」PPTをUpしました。&lt;/p&gt; &lt;p&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;img src ="http://blogs.wankuma.com/mnow/aggbug/311277.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>MVPの2013年のアワードキット</title><link>http://blogs.wankuma.com/mnow/archive/2013/01/07/310731.aspx</link><pubDate>Mon, 07 Jan 2013 19:15:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/01/07/310731.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/310731.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/01/07/310731.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/310731.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/310731.aspx</trackback:ping><description>&lt;p&gt;MVPの2013年のアワードキットが届きました。&lt;/p&gt; &lt;p&gt;たてと2013年輪っかとバッヂとMVPマークのピンと書類です。&lt;/p&gt; &lt;p&gt;&lt;a href="http://mnow.wankuma.com/blogimg/MVP2013_10CE2/001.jpg"&gt;&lt;img title="画像001" 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="画像001" src="http://mnow.wankuma.com/blogimg/MVP2013_10CE2/001_thumb.jpg" width="244" height="236"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/310731.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>MVP表彰の報告</title><link>http://blogs.wankuma.com/mnow/archive/2013/01/02/310527.aspx</link><pubDate>Wed, 02 Jan 2013 00:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/01/02/310527.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/310527.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/01/02/310527.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/310527.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/310527.aspx</trackback:ping><description>&lt;p&gt;マイクロソフトから Visual Developer Tools - C#の カテゴリで、MVPの再表彰していただくことになりました。&lt;br&gt;よりいっそう自己の研鑽とコミュニティ発展の協力に努めるよう頑張ります。&lt;br&gt;今年は仕事面でも貪欲に取り組んでいきたいと思います。 &lt;br&gt;Windows8 / Azule / SharePoint / WindowsPhone / Dinamics CRM いろんなプラットフォームにでしゃばっていきたいです。&lt;/p&gt; &lt;p&gt;MVPの表彰も９回目になりました。&lt;br&gt;応援・協力していただいた皆様ありがとう御座いました。&lt;br&gt;これからもよろしくお願いいたします。 &lt;br&gt;10年記念輪っかを目指して頑張ります。 &lt;p&gt;2013/01/01 (火) 23:53に「2013 Microsoft MVP 受賞のお知らせ」が来たのでこの時間になってしまいました。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/310527.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>謹賀新年</title><link>http://blogs.wankuma.com/mnow/archive/2013/01/01/310508.aspx</link><pubDate>Tue, 01 Jan 2013 00:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2013/01/01/310508.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/310508.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2013/01/01/310508.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/310508.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/310508.aspx</trackback:ping><description>&lt;p&gt;あけましておめでとうございます。&lt;br&gt;今年もよろしくお願いします。 &lt;p&gt;RIAアーキテクチャー研究会 リーダーをさせていただいてます。&lt;br&gt;&lt;a title="https://www.facebook.com/groups/182996675100851/" href="http://www.facebook.com/groups/182996675100851/"&gt;http://www.facebook.com/groups/182996675100851/&lt;/a&gt; &lt;p&gt;INETA JAPAN の理事もやらせていただいてます。 &lt;br&gt;&lt;a href="http://www.ineta.jp/"&gt;http://www.ineta.jp/&lt;/a&gt; &lt;p&gt;「.Net ユーザーエクスペリエンス研究所」よろしくお願いします。&lt;br&gt;&lt;a href="http://mnow.jp/"&gt;http://mnow.jp/&lt;/a&gt; &lt;p&gt;Windows8 / Azule / SharePoint いろんなプラットフォームにでしゃばっていきたいです。&lt;br&gt;ことしもますます色々とやっていきたいと思います。&lt;br&gt;よろしくお願いいたします。 &lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/310508.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>わんくま同盟東京勉強会第73回 ありがとうございました</title><link>http://blogs.wankuma.com/mnow/archive/2012/07/22/284159.aspx</link><pubDate>Sun, 22 Jul 2012 09:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2012/07/22/284159.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/284159.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2012/07/22/284159.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/284159.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/284159.aspx</trackback:ping><description>&lt;p&gt;わんくま同盟東京勉強会第73回無事終了しました。&lt;/p&gt; &lt;p&gt;スタッフ・スピーカ・ご来場の方々・USTで視聴されてた方々ありがとうございました。&lt;/p&gt; &lt;p&gt;今回は非公開セッションが2つもあったのですが充実した内容だったと思います。&lt;/p&gt; &lt;p&gt;私もたぶん日本で最初のご紹介セッションではないかと思われる TPL データフロー を話すことができてうれしいです。&lt;/p&gt; &lt;p&gt;私のPPTはいつもの通り以下のページで公開しました。&lt;/p&gt; &lt;p&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;img src ="http://blogs.wankuma.com/mnow/aggbug/284159.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>えムナウ</dc:creator><title>わんくま同盟 東京勉強会 #73</title><link>http://blogs.wankuma.com/mnow/archive/2012/07/19/284135.aspx</link><pubDate>Thu, 19 Jul 2012 18:14:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2012/07/19/284135.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/284135.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2012/07/19/284135.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/284135.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/284135.aspx</trackback:ping><description>&lt;p&gt;今週の土曜日に開催です。&lt;br&gt;急いで登録してください。 &lt;p&gt;&lt;a title="http://www.wankuma.com/seminar/20120721tokyo73/" href="http://www.wankuma.com/seminar/20120721tokyo73/"&gt;http://www.wankuma.com/seminar/20120721tokyo73/&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;もうすぐWindows8やVisual Studio 2012がRTMされます。&lt;br&gt;Windows8 メトロ環境 や Visual Studio 2012 開発の準備はできていますでしょうか？&lt;br&gt;今回は、Windows8 メトロ環境 や Visual Studio 2012 の概要から濃いところまで豪華な講師陣でお届けします。 &lt;p&gt;わんくま同盟 東京勉強会 #73&lt;br&gt;2012/07/21 10:40-17:30 新宿 お菜家です。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;10:40 ～ 11:00　開場・受付開始  &lt;li&gt;11:00 ～ 11:10　わんくまについて  &lt;li&gt;11:10 ～ 12:00　「Windows 8 開発の選択肢」 by &lt;a href="http://ufcpp.net/"&gt;岩永&lt;/a&gt;さん Lv.2くまー  &lt;li&gt;12:00 ～ 13:00　おひるごはん  &lt;li&gt;13:00 ～ 13:30　ライトニングトーク  &lt;ul&gt;&lt;/ul&gt; &lt;li&gt;13:40 ～ 14:30　「Visual Studio 2012 &amp;amp; .NET Framework 4.5 を網羅的に理解！」 by 近藤 和彦さん (日本マイクロソフト) Lv.2くまー  &lt;li&gt;14:40 ～ 15:30　「C++ から見た Windows Runtime」 by &lt;a href="http://www.wisdomsoft.jp/"&gt;赤坂 玲音&lt;/a&gt;さん Lv.2くまー  &lt;li&gt;15:40 ～ 16:30　「Deep Dive Metro スタイルアプリ」 by &lt;a href="http://blogs.msdn.com/b/shozoa/"&gt;荒井 省三&lt;/a&gt;さん (日本マイクロソフト) Lv.3.4くまー  &lt;li&gt;16:40 ～ 17:30　「非同期とデータフロー」 by &lt;a href="http://blogs.wankuma.com/mnow/"&gt;えムナウ&lt;/a&gt; Lv.2くまー  &lt;li&gt;18:00 ～ 懇親会&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;ぜひ来てください。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/284135.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><item><dc:creator>えムナウ</dc:creator><title>MVVM ViewModel は Portable Library に移行する</title><link>http://blogs.wankuma.com/mnow/archive/2012/06/11/277129.aspx</link><pubDate>Mon, 11 Jun 2012 03:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/mnow/archive/2012/06/11/277129.aspx</guid><wfw:comment>http://blogs.wankuma.com/mnow/comments/277129.aspx</wfw:comment><comments>http://blogs.wankuma.com/mnow/archive/2012/06/11/277129.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mnow/comments/commentRss/277129.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mnow/services/trackbacks/277129.aspx</trackback:ping><description>&lt;p&gt;ビュー モデルは .NET Framework 4.0 では 未サポートだったのですが。&lt;br&gt;Silverlight・Windows Phone 7 は Portable Library でサポートされていました。&lt;br&gt;&lt;a title="http://msdn.microsoft.com/ja-jp/library/gg597391.aspx" href="http://msdn.microsoft.com/ja-jp/library/gg597391.aspx"&gt;http://msdn.microsoft.com/ja-jp/library/gg597391.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;.NET Framework 4.5 では .NET Framework ・ Metro style ・ Silverlight ・ Windows Phone 全てでビュー モデルは Portable Library でサポートされます。 &lt;br&gt;さらに 入力検証の強い味方 DataAnnotations も .NET Framework ・ Metro style ・ Silverlight でサポートされます。&lt;br&gt;&lt;a title="http://msdn.microsoft.com/ja-jp/library/gg597391(v=vs.110).aspx" href="http://msdn.microsoft.com/ja-jp/library/gg597391(v=vs.110).aspx"&gt;http://msdn.microsoft.com/ja-jp/library/gg597391(v=vs.110).aspx&lt;/a&gt;&lt;br&gt;&lt;a title="http://msdn.microsoft.com/ja-jp/library/hh563947(v=vs.110).aspx" href="http://msdn.microsoft.com/ja-jp/library/hh563947(v=vs.110).aspx"&gt;http://msdn.microsoft.com/ja-jp/library/hh563947(v=vs.110).aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;.NET Framework 4.5 リリースまでには、MVVM ViewModel Diagram も Portable Library に対応するつもりです。&lt;/p&gt; &lt;p&gt;みなさんも、Portable Library の範囲内で ViewModel を書けるように準備を始めてください。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mnow/aggbug/277129.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>