えムナウ Blog

えムナウ の なすがまま

目次

Blog 利用状況

ニュース


follow mnow at http://twitter.com


えムナウのプログラミングのページ

INETAJ

書庫

日記カテゴリ

ギャラリ

2015年5月6日 #

MvvmCross について 6

MvvmCross のクラスのは Mvx というプレフィックスが付いているのが一般的です。
ということは Mvx クラスは MvvmCross のなかでも特別なクラスという意味に見えます。
クラス生成・IoCコンテナサポート・トレースサポート・例外クラス生成を行っています。

名前空間 Cirrious.CrossCore
public static class Mvx

クラス図

image

 

クラス生成
public static T IocConstruct<T>()
public static object IocConstruct(Type t)

IoC コンテナ
public static void RegisterSingleton(Func serviceConstructor)
public static void RegisterSingleton(Type tInterface, Func serviceConstructor)
public static void RegisterSingleton(Type tInterface, object service)
public static void ConstructAndRegisterSingleton()
public static void LazyConstructAndRegisterSingleton()
public static void LazyConstructAndRegisterSingleton(Func constructor)
public static void LazyConstructAndRegisterSingleton(Type type, Func constructor)
public static void RegisterType()
public static void RegisterType(Func constructor)
public static void RegisterType(Type type, Func constructor)
public static void RegisterType(Type tInterface, Type tType)
public static bool CanResolve<TService>()
public static bool CanResolve(Type serviceType)
public static TService Resolve<TService>()
public static object Resolve(Type serviceType)
public static bool TryResolve<TService>(out TService service)
public static bool TryResolve(Type serviceType, out object service)
public static T Create<T>()
public static T GetSingleton<T>()

IoCコンテナ登録時実行
public static void CallbackWhenRegistered<T>(Action<T> action)
public static void CallbackWhenRegistered<T>(Action action)
public static void CallbackWhenRegistered(Type type, Action action)

トレース
public static void TaggedTrace(MvxTraceLevel level, string tag, string message, params object[] args)
public static void TaggedTrace(string tag, string message, params object[] args)
public static void TaggedWarning(string tag, string message, params object[] args)
public static void TaggedError(string tag, string message, params object[] args)
public static void Trace(MvxTraceLevel level, string message, params object[] args)
public static void Trace(string message, params object[] args)
public static void Warning(string message, params object[] args)
public static void Error(string message, params object[] args)

例外クラス生成
public static MvxException Exception(string message)
public static MvxException Exception(string message, params object[] args)
public static MvxException Exception(Exception innerException, string message, params object[] args)

posted @ 22:59 | Feedback (0)

2015年4月25日 #

MvvmCross について 5

ViewModel の次は Command かなぁと、
INotifyPropertyChanged と ICommand を制すればMVVMは怖くないと。

名前空間 Cirrious.MvvmCross.ViewModels
public class MvxCommand : MvxCommandBase , IMvxCommand
public class MvxCommand<T> : MvxCommandBase , IMvxCommand

クラス図
image

 

ICommandサポート
通常のよくあるコマンドでパラメータがあるのとないののパターンがあります。
特徴は IMvxCommandHelper がIocコンテナに定義があるかどうかで CanExecuteChanged が WeakReference かどうかを代えられます。
object parameter は string で渡しても Convert.ChangeType メソッド で可能な限り型変換してくれます。
public event EventHandler CanExecuteChanged;
public void RaiseCanExecuteChanged();
public MvxCommand(Action execute, Func<bool> canExecute);
public bool CanExecute(object parameter);
public void Execute(object parameter);
public bool CanExecute();
public void Execute();

posted @ 22:44

2015年4月24日 #

MvvmCross について 4

これからはよく使うクラスの説明をしていきたいと思う。

まずは MVVM と名がついているので ViewModel の基底クラス MvxViewModel から説明します。

名前空間 Cirrious.MvvmCross.ViewModels
public abstract class MvxViewModel : MvxNavigatingObject, IMvxViewModel

クラス図

image

 

abstract クラスで ViewModel で継承して使うように設計されている。

Dispatcher サポート
UIスレッドの Dispatcher をサポートしておりUIスレッドでのメソッド実行を行える。
protected IMvxMainThreadDispatcher Dispatcher;
protected void InvokeOnMainThread(Action action);

INotifyPropertyChanged サポート
ViewModel のプロパティが View に変更を通知する INotifyPropertyChanged をサポートする。
プロパティの set 時に使う SetProperty や イベントを発行する RaisePropertyChanged は当然ある。
RaisePropertyChanged をUIスレッドで常に実行するためのフラグや プロパティ名を string.Empty でイベントを発行すると全プロパティが変更されたとみなすよう促すメソッドもある。
ユニットテストのときなどイベントを発行されると邪魔な場合に抑止する機構もある。
public bool ShouldAlwaysRaiseInpcOnUserInterfaceThread();
public void ShouldAlwaysRaiseInpcOnUserInterfaceThread(bool value);
public void RaisePropertyChanged<T>(Expression<Func<T>> property);
public void RaisePropertyChanged([CallerMemberName] string whichProperty = "");
public virtual void RaiseAllPropertiesChanged();
public virtual void RaisePropertyChanged(PropertyChangedEventArgs changedArgs);
protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null);
protected virtual MvxInpcInterceptionResult InterceptRaisePropertyChanged(PropertyChangedEventArgs changedArgs);

遷移サポート
IMvxViewDispatcher と連携して各プラットフォームの ViewDispatcher で遷移を実現している。
例えばストアアプリやWindows Phoneなどは Close 時に前ページに遷移するがWPFではワーニングのログを出力する。
ShowViewModel は各種パラメータ形態に対応しているが最終的に最後のメソッド呼び出す。
protected IMvxViewDispatcher ViewDispatcher;
protected bool Close(IMvxViewModel viewModel);
protected bool ChangePresentation(MvxPresentationHint hint);
protected bool ShowViewModel<TViewModel>(object parameterValuesObject,
                                                 IMvxBundle presentationBundle = null,
                                                 MvxRequestedBy requestedBy = null);
protected bool ShowViewModel<TViewModel>(IDictionary<string, string> parameterValues,
                                                 IMvxBundle presentationBundle = null,
                                                 MvxRequestedBy requestedBy = null);
protected bool ShowViewModel<TViewModel>(IMvxBundle parameterBundle = null,
                                                 IMvxBundle presentationBundle = null,
                                                 MvxRequestedBy requestedBy = null);
protected bool ShowViewModel(Type viewModelType,
                                     object parameterValuesObject,
                                     IMvxBundle presentationBundle = null,
                                     MvxRequestedBy requestedBy = null);
protected bool ShowViewModel(Type viewModelType,
                                     IDictionary<string, string> parameterValues,
                                     IMvxBundle presentationBundle = null,
                                     MvxRequestedBy requestedBy = null);
protected bool ShowViewModel(Type viewModelType,
                                     IMvxBundle parameterBundle = null,
                                     IMvxBundle presentationBundle = null,
                                     MvxRequestedBy requestedBy = null);
private bool ShowViewModelImpl(Type viewModelType, IMvxBundle parameterBundle, IMvxBundle presentationBundle,MvxRequestedBy requestedBy);

ViwModelサポート
ViewModel の開始時や終了時には、virtual で修飾されたメソッドが呼ばれるので override して適切な処理を行える。
遷移のShowViewModelで指定した parameterBundle や requestedBy が取得できる。
ReloadFromBundle や SaveStateToBundle では中断・再開時に記憶しておく情報を利用できる。
public MvxRequestedBy RequestedBy { get; set; };
public void Init(IMvxBundle parameters);
public void ReloadState(IMvxBundle state);
public void SaveState(IMvxBundle state);
public virtual void Start();
protected virtual void InitFromBundle(IMvxBundle parameters);
protected virtual void ReloadFromBundle(IMvxBundle state);
protected virtual void SaveStateToBundle(IMvxBundle bundle);

posted @ 5:24

2015年4月20日 #

MvvmCross について 3

MvvmCross について 2 で作成したソリューションに、WPFとストアアプリのプロジェクトを追加して、
.Core のプロジェクト参照を追加し、
NuGet から MVVM Cross Hot Tuna Starter Pack を入れる。

image

 

Windows Phone は 8.1 から Windows 8.1のWinRT と 従来の Sliverlight 8.1 に開発環境が分離している。

Windows Phone 8.1のWinRT プロジェクトも追加してNuGet から MVVM Cross Hot Tuna Starter Pack を入れる。

Windows Phone 8.0 のプロジェクトのプロパティから Sliverlight 8.1 に更新する。

更新すると MVVM Cross の環境も変わるのか NuGet から 一度削除して MVVM Cross Hot Tuna Starter Pack を入れなおさなければいけない場合もあった。

これで今回説明する基本となるソリューションができる。

image

posted @ 7:48 | Feedback (1)

2015年4月18日 #

MvvmCross について 2

用意しておく

Visual Studio 2013 Update4

Mac

Xamarin ライセンス

Mac 開発者ID

 


Xamarin のインストール

Xamarin をインストールして有効化

http://www.xlsoft.com/jp/products/xamarin/xamarin_android_win_installation.html

http://www.xlsoft.com/jp/products/xamarin/xamarin_ios_win_installation.html

 

ソリューションを作る

image

 

各プロジェクトに NuGet から MVVM Cross Hot Tuna Starter Pack を入れる

image

 

ソリューションルート(App)の名前空間などをApp.Core のように .Core を追加する
(Xamarinはソリューション名で作るけどMvvmCrossは.Coreがデフォルトな為)

ToDo-MvvmCross の通りにソースを修正する

image

posted @ 20:17 | Feedback (183)

MvvmCross について 1

最近よく MVVM Cross を使っているので書いておこうと思う。
まず一番使っているのは ストアアプリ 次に WPF なので一般の MVVM Cross 利用者とは違う使い方だというのは認識しているが、共通点もあると思う。

まずは基礎的な内容から。

 

MvvmCrossとは

Xamarin で iOSやAndrodといったプラットフォームにも対応していて、Windows Phoneや Windows Store App や WPF も対応しているMVVMライブラリ

PCL( Portable Class Library ) として作成することで全プラットフォーム共通の ViewModel (および Model) クラスを作成する

MS-PL ライセンス

GtiHubで公開

 

MVVMとは

イベント駆動開発のコードビハインドの保守性や疎結合性を高めるためにコードビハインドをViewModelに分離したもの。

イベントやプロパティのかわりにコマンドやバインディングしたプロパティを使う。

 

PCL( Portable Class Library ) とは

汎用性のあるクラス ライブラリ

複数の .NET Framework プラットフォームで動作するマネージアセンブリを作成してビルド

共有ビジネスロジックなど、多数のプロジェクトで共有するコードを含むクラスを作成し、そのクラスを異なる種類のプロジェクトから参照

変更することなく 各種プラットフォームで動作する、汎用的なアセンブリを作成

posted @ 13:39 | Feedback (0)

2015年1月1日 #

謹賀新年

新年あけましておめでとうございます。

今回はMVP受賞がかないませんでした。
仕事が中心となってしまったからとか色々と理由はあると思いますが、
2005年1月から2014年12月まで10年間ありがとうございました。

そうは言っても私自身が変わるわけでもありません。
2004年6月にAILightさん の Blog「えムナウ の ありのまま」からコミュニティデビューは始まりました。
「えムナウ の なずがまま」「えムナウ の とどけもの」と進化していきました。
「ありのままのじぶんになるの」というわけで初心にもどります。

よりいっそう自己の研鑽とコミュニティ発展の協力に努めるよう頑張ります。
これからはMicrosoftにこだわらずいろんな分野にでしゃばっていきたいです。
これからも変わらずよろしくお願いいたします。

P.S.
森進一の「年上の人」が「ダメ~ヨ、ダメダメ」の元祖だって、よく気が付いた人がいたね。

posted @ 0:00 | Feedback (0)

2014年8月13日 #

2014/10/18 わんくま東京の予定

速報なので細かいセッション内容は決まっていません。

 

今回は Xamarin Day です。

C# で iOS、Android、Mac アプリを簡単に開発できる夢のプラットフォーム開発環境。

慣れ親しんだ VisualStudio や フル機能を持つ Xamarin Studio で開発できます。
まる1日 Xamarin のセッションをいち早くお届けできるのもわんくま東京ならではです。

 

・ 10:40 ~ 11:00 開場・受付開始

・ 11:00 ~ 11:10 わんくまについて

・ 11:10 ~ 12:00 「」 by エクセルソフト田淵さん

・ 12:00 ~ 13:00 おひるごはん

・ 13:00 ~ 13:30 ライトニングトーク

・ 募集中

・ 募集中

・ 13:40 ~ 14:30 「」 by 黒柳さん

・ 14:40 ~ 15:30 「」 by 初音さん

・ 15:40 ~ 16:30 「」 by えムナウ

・ 17:00 ~ 懇親会

posted @ 23:51 | Feedback (0)

TEST

久々なのでTEST投稿です。

posted @ 23:45 | Feedback (1)

2013年8月6日 #

ストアアプリはMVPVM パターンで開発しよう PPTとサンプルソース

わんくま同盟 東京勉強会 #84

「ストアアプリはMVPVM パターンで開発しよう」

ストアアプリは現在Blendでビヘイビアが使えません。
MVVMの構築にも苦労されているかあきらめていると思います。
ストアアプリのGridパターンはViewも特別なLayoutAwarePageから継承します。
ナビゲーションをおもに行うPresenterが威力を発揮する環境です。
ストアアプリのMVPVM パターンを見てみましょう。

PPTとサンプルソースを以下のページの一番下にUPしました。

http://www.mnow.jp/tabid/220/Default.aspx

posted @ 1:08 | Feedback (0)

2013年7月31日 #

わんくま同盟 東京勉強会 #84

わんくま同盟 東京勉強会 #84
メンバーも内容も濃いですよ。
今すぐ登録しましょう。
2013/08/03 10:40-17:30
?10:40 ~ 11:00 開場・受付開始
?11:00 ~ 11:10 わんくまについて
?11:10 ~ 12:00 「Kinect 深度情報処理入門」 by 暁 紫電 Lv.1くまー
?12:00 ~ 13:00 おひるごはん
?13:00 ~ 13:30 ライトニングトーク
?13:40 ~ 14:30 「ASP.NET MVCをいまさらやってみよう!」 by 中 Lv.1くまー
?14:40 ~ 15:30 「開発者も、そろそろ PowerShell はじめてもいいんじゃない?」 by マイクロソフト安納さん Lv.1くまー
?15:40 ~ 16:30 「グリッドアプリのテンプレートについて」 by 荒井 省三さん Lv.3くまー
?16:40 ~ 17:30 「ストアアプリはMVPVM パターンで開発しよう」 by えムナウ Lv.2くまー
?18:00 ~ 懇親会
http://www.wankuma.com/seminar/20130803tokyo84/

posted @ 18:26 | Feedback (0)

2013年5月30日 #

WPF と GIFアニメ

WPFでGIFアニメを表示するとなると、GDI+に逃げてSystem.Drawingを使う例がほとんどです。

いばらの道ですがBitmapDecoderを使ってMetaDataを取得することにより各フレームの画像と必要な情報を取得することができます。

            FileStream imageFileStrm = new FileStream("./Resources/GifAnime.gif",

                FileMode.Open, FileAccess.Read, FileShare.Read);

            BitmapDecoder decoder = BitmapDecoder.Create(imageFileStrm,

                BitmapCreateOptions.PreservePixelFormat,

                BitmapCacheOption.Default);

            BitmapMetadata metadata = (BitmapMetadata)decoder.Frames[0].Metadata;

            var top = metadata.GetQuery("/imgdesc/Top");

            var left = metadata.GetQuery("/imgdesc/Left");

            var width = metadata.GetQuery("/imgdesc/Width");

            var height = metadata.GetQuery("/imgdesc/Height");

            var delay = metadata.GetQuery("/grctlext/Delay");

            var transparencyFlag = metadata.GetQuery("/grctlext/TransparencyFlag");

            var transparentColorIndex = metadata.GetQuery("/grctlext/TransparentColorIndex");

            image.Source = decoder.Frames[0];

 

ここから先もまだ長いのですが、この方法を応用したライブラリが既にあります。

理屈は抑えておくとソースもダウンロードできるし安心してライブラリを使えます。

 

WPF Animated GIF

http://wpfanimatedgif.codeplex.com/

posted @ 14:06 | Feedback (10)

2013年4月5日 #

わんくま同盟 東京勉強会 #81 あり得ないくらい豪華なスピーカ陣です。

わんくま東京 あり得ないくらい豪華なスピーカ陣です。
2013/04/13 10:40-17:30
http://www.wankuma.com/seminar/20130413tokyo81/

寒かった冬も終わり暖かくなり勉強会日和となってきました。
今回はマイクロソフトの赤間さんとMicrosoft Certified Architectの福井さんを迎えて、
脇をεπιστημηとえムナウで固める豪華で鉄壁な布陣でお届けします。
内容も基本的なことにちょっと高度なことも混じる初心者から上級者まで満足いただけるものになると思います。
ぜひ新入社員もさそってわんくま勉強会に来てみませんか?

ハッシュ表のからくり by επιστημη
ウォータフォール型開発プロセス・再入門 赤間 信幸さん
セッションタイトル:Ask the MCA vol.2。 開発者のお悩みに答えます。 福井 厚さん
ソフトウェア開発の過去とC#の未来 えムナウ

posted @ 15:33 | Feedback (0)

2013年2月10日 #

RIA アーキテクチャー研究会 第5回 セミナー

RIA アーキテクチャー研究会 第5回 セミナーやります。ぜひ来てくださいね。

2013/03/16 (土) 12:00 日本マイクロソフト株式会社 31F セミナールームA

http://atnd.org/event/E0012677

12:30~13:00 受付

13:00~14:00 大田一希さん(@okazuki)Blendの便利機能振り返り

14:00~14:10 休憩

14:10~15:10 尾上 雅則さん(@ugaya40)とあるソフトウェアアーキテクチャ設計の筋道

15:10~15:20 休憩

15:20~16:20 鈴木 章太郎さん(@shosuz) XAML /C# を使った Windows ストアアプリ(LOB)構築 TIPS
- Prism 4.5 & Kona Project 等のご紹介 - 

16:20~16:30 休憩

16:30~17:30 児玉宏之(@mnow)WindowsストアアプリでのMVVM・MVPVMパターン

posted @ 18:03 | Feedback (0)

2013年1月12日 #

Windows8 グリッドアプリケーションを解析する-その3

前の記事はこちら。

Windows8 グリッドアプリケーションを解析する-その1

Windows8 グリッドアプリケーションを解析する-その2

 

グリッドアプリケーションを作ってView関係のクラス図を作った。

ViewClasses

 

LayoutAwarePage クラス

アプリケーションのビューステートと表示状態のマップ、GoBack、GoForward、GoHome、ナビゲーション用のマウスおよびキーボードのショートカット、ナビゲーションの状態管理およびプロセス継続時間管理、ディクショナリー型ビュー モデル、を実装した各ページの基底クラスである。

 

コンストラクタ

ディクショナリー型ビュー モデルの初期化、Loaded イベント・Unloaded イベントの作成を行い、Loaded イベントでは StartLayoutUpdates、ナビゲーション用のマウスおよびキーボードのショートカット用のイベントの登録が行われる、Unloaded イベントでは StopLayoutUpdates、ナビゲーション用のマウスおよびキーボードのショートカット用のイベントの削除が行われる。

 

アプリケーションのビューステートと表示状態のマップ

StartLayoutUpdates Loaded イベントから呼び出されるのでPageでは直接呼び出す必要はない、ページ内のコントロールで必要があればLoaded イベントから呼び出す、ApplicationView.Valueを表示状態とする、初回呼び出しだけSizeChangedイベントの登録を行う。

SizeChangedイベントは InvalidateVisualState を呼ぶ。

StopLayoutUpdates Unloaded イベントから呼び出されるのでPageでは直接呼び出す必要はない、ページ内のコントロールで必要があればUnloaded イベントから呼び出す、StartLayoutUpdates を呼び出した全てのコントロールがStopLayoutUpdatesを呼び出したらSizeChangedイベントの削除を行う。

InvalidateVisualState StartLayoutUpdates を呼び出した全てのコントロールに対しApplicationView.Valueを表示状態として反映する。

 

GoBack、GoForward、GoHome

Frame に対して GoBack、GoForward、GoHome を実行する。 GoHome は可能な回数分Frame.GoBackを実行して実装される。

 

ナビゲーション用のマウスおよびキーボードのショートカット

AcceleratorKeyActivated イベントハンドラ
前に戻るキーまたは Alt キーを押しながら左方向キーを押すと前に戻り、次に進むキーまたは Alt キーを押しながら右方向キーを押すと次に進む。

PointerPressed イベントハンドラ
マウスの[戻る] を押すと前に戻り、 [進む] を押すと次に進む。

 

ナビゲーションの状態管理およびプロセス継続時間管理

OnNavigatedTo 
フレームに表示されるときに呼び出される。
1)NavigationEventArgs の NavigationMode が NavigationMode.New の場合、次に進むナビゲーションをクリアする。
2)LoadState を NavigationEventArgs の Parameter と 前のセッションでこのページによって保存された状態のディクショナリ(NavigationMode.New の場合null) をパラメータに呼び出す。

OnNavigatedFrom
フレームに表示されなくなるときに呼び出される。
1)SaveState を 初期化された Dictionary<String, Object> をパラメータに呼び出す。
2)保存された状態のディクショナリに格納する。

LoadState / SaveState
protected virtual の実装になっているのでアプリケーションが中断後に終了しまた表示される場合に復元したいViewModelの情報を登録・復元する必要がある。

 

ディクショナリー型ビュー モデル

DefaultViewModel IObservableMap<String, Object>型の文字列とバインドするデータが組になった ViewModel である。 Dictionary に変更があったら MapChangedEventHandler<K, V> MapChanged イベントを発行する。INotifyPropertyChanged や INotifyCollectionChanged は発行しないのでバインドするデータ側で用意する必要がある。

 

次回は各 View の実装について解析する。

posted @ 22:39 | Feedback (0)

2013年1月10日 #

Windows8 グリッドアプリケーションを解析する-その2

前の記事はこちら。

Windows8 グリッドアプリケーションを解析する-その1

 

グリッドアプリケーションを作ってView関係のクラス図を作った。

ViewClasses

 

Appクラス

App.xaml はりソースのマージとアプリケーション名の記述がある。

OnLaunched はアプリケーション起動時の処理で、LaunchActivatedEventArgs にどの様な遷移で起動されたか、前回の実行状態、実行引数などが入っている。

 実装は初期ナビゲーションである。ナビゲーションは Frame を使いFrameの中身を変えることによって遷移する。

 1)Window.Current.Content が null なら Frame を作成し、前回のアプリケーションが中断後に終了されていたら保存されたセッション状態を復元(SuspensionManager.RestoreAsync)してから、Frame を Window.Current.Content に格納する。

 2)Frame の Content がない場合、Frame.Navigate で GroupedItemsPage をロードする。

 3)Window.Current.Activate で Frame を Active にする。

OnSuspending はアプリケーション中断時の処理で、SuspendingEventArgs に中断要求の情報が入っている。

 実装は中断動作を遅延要求し、セッション状態を保存(SuspensionManager.SaveAsync)してから、中断動作の完了を通知する。

 

SuspensionManagerクラス

グローバル セッション状態をキャプチャし、アプリケーションのプロセス継続時間管理を簡略化する目的のクラスである。

Dictionary<string, object> SessionState のセッション状態を持っている。

List<Type> KnownType は、DataContractSerializer で使用する、_sessionState.xml にシリアライズする時に存在可能な型を列挙する。

RegisterFrame は、Frame を一意なキーを付けて登録する。

UnregisterFrame はFrame の登録を削除する。

SaveAsync は、全Frameのセッション状態をローカルフォルダ(ApplicationData.Current.LocalFolder.CreateFileAsync)の _sessionState.xml に保存する、
ローカルフォルダは c:\Users\ユーザー名\AppData\Local\Packages\パッケージID_公開キー\LocalState に存在する、
パッケージIDはPackage.appxmanifestに存在する、公開キーはアプリケーションの厳密名の最後につけられるものと同じである。

RestoreAsync は、全Frameのセッション状態をローカルフォルダ(ApplicationData.Current.LocalFolder.GetFileAsync)の _sessionState.xml から復元する。

SessionStateForFrame は、指定した Frame のセッション状態を取得する。

 

次回は各 View の基底クラスとなる LayoutAwarePage について解析する。

posted @ 17:54 | Feedback (1)

Windows8 グリッドアプリケーションを解析する-その1

Windows8のWindowsストアアプリの新しいプロジェクトにグリッドアプリケーションがある。

screenshot_creategridproject

 

Viewは3層からなっている。

グループ一覧-グループ詳細-アイテム詳細である。

Windows8の標準アプリの「ストア」「ニュース」と同じ構造である。

 

グループ一覧は全グループがグループごとにアイテムの画像・タイトル・サブタイトルの簡単な情報がGridViewで表示される。

グループタイトルをタップするとグループ詳細に、アイテムの画像・タイトル・サブタイトルをタップするとアイテム詳細に遷移する。

screenshot_01102013_122722

 

グループ詳細は1グループのグループタイトル・サブタイトル・画像・説明とグループ内のアイテムのタイトル・サブタイトル・画像・説明(長いと一部表示されて残りは省略される)がGridViewで表示される。

アイテムをタップするとアイテム詳細に遷移する。戻るボタンで元のグループ一覧に戻る。

screenshot_01102013_122737

 

アイテム詳細はグループタイトルとアイテムのタイトル・サブタイトル・画像・説明がFlipViewの中のScrollViewerで表示される。

FlipViewで同じグループ内のアイテムに遷移する。戻るボタンで元のグループ一覧やグループ詳細に戻る。

screenshot_01102013_122749

 

ViewはGridViewやFlipViewやScrollViewerの知識が必要である。

また、アプリケーションのビューステートで画面の構造が変わるのでアプリケーションのビューステートの知識も必要である。

Windows8 グリッドアプリケーションのクラス構造を解析することを主眼としているのでコントロールやビューステートの説明はしない。

 

次回はView関係のクラス図を使って各クラスの解析を行う。

posted @ 13:48 | Feedback (1)

2013年1月9日 #

Windows ストア アプリの開発者 が気を付けること

わんくま同盟東京勉強会第76回の「Windows ストア アプリの開発者 が気を付けること」PPTをUpしました。

http://www.mnow.jp/tabid/220/Default.aspx

posted @ 13:57 | Feedback (0)

2013年1月7日 #

MVPの2013年のアワードキット

MVPの2013年のアワードキットが届きました。

たてと2013年輪っかとバッヂとMVPマークのピンと書類です。

画像001

posted @ 19:15 | Feedback (0)

2013年1月2日 #

MVP表彰の報告

マイクロソフトから Visual Developer Tools - C#の カテゴリで、MVPの再表彰していただくことになりました。
よりいっそう自己の研鑽とコミュニティ発展の協力に努めるよう頑張ります。
今年は仕事面でも貪欲に取り組んでいきたいと思います。
Windows8 / Azule / SharePoint / WindowsPhone / Dinamics CRM いろんなプラットフォームにでしゃばっていきたいです。

MVPの表彰も9回目になりました。
応援・協力していただいた皆様ありがとう御座いました。
これからもよろしくお願いいたします。
10年記念輪っかを目指して頑張ります。

2013/01/01 (火) 23:53に「2013 Microsoft MVP 受賞のお知らせ」が来たのでこの時間になってしまいました。

posted @ 0:19 | Feedback (2)

2013年1月1日 #

謹賀新年

あけましておめでとうございます。
今年もよろしくお願いします。

RIAアーキテクチャー研究会 リーダーをさせていただいてます。
http://www.facebook.com/groups/182996675100851/

INETA JAPAN の理事もやらせていただいてます。
http://www.ineta.jp/

「.Net ユーザーエクスペリエンス研究所」よろしくお願いします。
http://mnow.jp/

Windows8 / Azule / SharePoint いろんなプラットフォームにでしゃばっていきたいです。
ことしもますます色々とやっていきたいと思います。
よろしくお願いいたします。

posted @ 0:00 | Feedback (2)

2012年7月22日 #

わんくま同盟東京勉強会第73回 ありがとうございました

わんくま同盟東京勉強会第73回無事終了しました。

スタッフ・スピーカ・ご来場の方々・USTで視聴されてた方々ありがとうございました。

今回は非公開セッションが2つもあったのですが充実した内容だったと思います。

私もたぶん日本で最初のご紹介セッションではないかと思われる TPL データフロー を話すことができてうれしいです。

私のPPTはいつもの通り以下のページで公開しました。

http://www.mnow.jp/tabid/220/Default.aspx

posted @ 9:23 | Feedback (0)

2012年7月19日 #

わんくま同盟 東京勉強会 #73

今週の土曜日に開催です。
急いで登録してください。

http://www.wankuma.com/seminar/20120721tokyo73/

 

もうすぐWindows8やVisual Studio 2012がRTMされます。
Windows8 メトロ環境 や Visual Studio 2012 開発の準備はできていますでしょうか?
今回は、Windows8 メトロ環境 や Visual Studio 2012 の概要から濃いところまで豪華な講師陣でお届けします。

わんくま同盟 東京勉強会 #73
2012/07/21 10:40-17:30 新宿 お菜家です。

 

  • 10:40 ~ 11:00 開場・受付開始
  • 11:00 ~ 11:10 わんくまについて
  • 11:10 ~ 12:00 「Windows 8 開発の選択肢」 by 岩永さん Lv.2くまー
  • 12:00 ~ 13:00 おひるごはん
  • 13:00 ~ 13:30 ライトニングトーク
    • 13:40 ~ 14:30 「Visual Studio 2012 & .NET Framework 4.5 を網羅的に理解!」 by 近藤 和彦さん (日本マイクロソフト) Lv.2くまー
    • 14:40 ~ 15:30 「C++ から見た Windows Runtime」 by 赤坂 玲音さん Lv.2くまー
    • 15:40 ~ 16:30 「Deep Dive Metro スタイルアプリ」 by 荒井 省三さん (日本マイクロソフト) Lv.3.4くまー
    • 16:40 ~ 17:30 「非同期とデータフロー」 by えムナウ Lv.2くまー
    • 18:00 ~ 懇親会

    ぜひ来てください。

    posted @ 18:14 | Feedback (0)

    2012年6月18日 #

    わかりやすい MVPVM を実践するために

    私の提唱する MVPVM パターンの目的は View と ViewModel の密結合を減らすことにあります。

    サンプルは以下のページの Community Open Day 2012 TwitterSample を参照してください。
    http://www.mnow.jp/tabid/220/Default.aspx

    実装における注意点は以下の通りです。

    MVVMパターンからの変更点

    View

    1)ViewModelからメッセンジャーの通信を受けてビヘイビアを起動する処理を書かない。
     Commandの処理はPresenterが行うのでViewを直接操作できる。

    2)DataTemplate の DataType は利用するが、DataTemplateSelector は利用しない。
     ViewModel の派生クラスを使えば DataTemplateSelector を使わずに DataTemplate の DataType で識別できる。

    ViewModel

    1)Commandの処理を書かない。
     Commandの処理はPresenterが行う。

    2)ViewModel は Command も含め、プロパティを View に提供することが主処理となる。

    3)コンストラクタ・終了処理は今までの通り書いていいがイベントは生成しない。

    4)View と ViewModel 間で完結する入力検証は行っていい。

    5)ソート・絞り込みなど ViewModel 内部で完結するデータ操作は行っていい。

    Application

    1)初期に起動する Presenter を決め プレゼンテーションロジックを書かない。
     プレゼンテーションロジックは Presenter に含む。

    2)初期に起動する Presenter の初期処理と終了処理を行う。

    Presenter

    1)ViewModel の Command を上書きして Command の処理を行う。

    2)描画時には Model のデータを取得して ViewModel に設定する。

    3)Command の処理で Model を更新し、ViewModel を更新する。

    4)子供の Presenter の初期処理と終了処理を行い、描画を指示する。ダイアログは終了をまつ。

     

    注意点は一応以上ですが順次追加するかもしれません。
    上記 MVVM からの変更点を見ながらサンプルソースを眺めてみてください。

    posted @ 0:17 | Feedback (0)

    2012年6月11日 #

    MVVM ViewModel は Portable Library に移行する

    ビュー モデルは .NET Framework 4.0 では 未サポートだったのですが。
    Silverlight・Windows Phone 7 は Portable Library でサポートされていました。
    http://msdn.microsoft.com/ja-jp/library/gg597391.aspx

    .NET Framework 4.5 では .NET Framework ・ Metro style ・ Silverlight ・ Windows Phone 全てでビュー モデルは Portable Library でサポートされます。
    さらに 入力検証の強い味方 DataAnnotations も .NET Framework ・ Metro style ・ Silverlight でサポートされます。
    http://msdn.microsoft.com/ja-jp/library/gg597391(v=vs.110).aspx
    http://msdn.microsoft.com/ja-jp/library/hh563947(v=vs.110).aspx

    .NET Framework 4.5 リリースまでには、MVVM ViewModel Diagram も Portable Library に対応するつもりです。

    みなさんも、Portable Library の範囲内で ViewModel を書けるように準備を始めてください。

    posted @ 3:24 | Feedback (0)