ContextMenuのMenuItemのへのデータバインディングはDateTmeplateでもHierarchicalDataTemplateでもなくStyleでよかった。DateTmeplateにしてしまうとMenuItemのContentの中にもうひとつMenuItemができてしまう。
ただし、セパレータの指定は別。例えばMenuItemViewModel内のプロパティをもとにStyleSelectorで振り分けるとすでにMenuItemなっているからSeparator型で指定するとエラーになってしまう。SeparatorはItemTmeplateSelectorでSeparatorだけ入ったDateTmeplateを指定すればいい。

CommandParameter

XAML

                                                                                                                      • -

CommandParameter="{Binding ElementName=MyTextBox, Path=Text}"

                                                                                                                      • -

ViewModel側

                                                                                                                      • -

SayHelloCommand = new RelayCommand(
 mytext => MessageBox.Show("Hello, " + mytext), // 実行するコマンドの方
 mytext => _counter % 2 == 0 // CanFuncの方(RaiseCanExecuteChanged()から更新される)
);

                                                                                                                      • -
                                                                                                                      • -

SayHelloCommand = new RelayCommand( // FrameworkElementごと渡す
 t => t.Text = Counter.ToString()
 );

                                                                                                                      • -

スクリーンフォントの縁を滑らかにする

Visual Studioをインストールして設定画面を
開いてみるとフォントがかくかくしている!Windows7なのに!メイリオUIは?
システムの詳細設定を色々きったからだろうからもとにもどしてたら
『スクリーンフォントの縁を滑らかにする』が原因だった。
文字の奇麗さを表すには滑らかっていうのか

|●    |●    |●===>●|

モックアップを作るときはタイムラインで全ての画面を入れてくと破綻してくる。
あの画面間にフローを追加したいときとかもうわけわかんなくなる。
なので、Ajax的な遷移も含めた画面単位のシンボルを作成する。
画面内のミニ遷移は15frame毎に作成する(ミニ遷移のトランジションなら0.1sで充分)
画面間はトランジションはだいたい0.4sとか。

Eventの発行

こんな簡単なことも忘れてる!
半年経つと感覚取り戻すのに準備が必要だなぁ
(OnEventパターンは後で復習する)

//Chlid側
public event EventHandler hoge;

hoge(this, new EventArgs());


//Parent側
Chlid.hoge += delegete(sender, eventData)
{
// todo
}