>>86
WPF+MVVMの場合、宣言的なUI定義を記述する方法に関しては>>81のようなスタイルよりも宣言的といえる。コードと違い一切手続きを書いてなくて、バインディングを使った完全に静的な記述のみだからね。
じゃあ何が問題かというと、バインディングの代償としてVとVMとの結合が強くなっているために、実質的にビューが固有の状態を持ってしまっているのに近い状況になるケースが多いことだ。
たとえば>>81のボタンの例で言うと、MVVMでMの状態Aに基づいてボタンを動的に追加したいがMを直接バインドできない場合、
VMの持つコレクションを見て既にアイテムがない場合のみアイテムを追加するようなコードを書くことになる。これは明らかに宣言的ではないよね。
WPF+MVVMなら例えば変更が入るたびに毎回VMをMに基づいて新しく作ってDataContextを設定し直すようにすれば完全に宣言的にできるわけだけど、
これをやると変更の必要のないボタンまで毎回作り直しが走ってしまい、実用的ではない。
それを>>81ではフレームワーク側が自動的に差分を取って賢く画面に反映してくれるというわけ。