例えば、

ViewModel vm;
void ButtonClick(sender, e) {
vm.DoWork();
}
とかやってしまうと、View が ViewModel 参照しちゃってるでしょ、アセンブリ的に。
で、

void ButtonClick(sender, e) {
dynamic vm = DataContext;
vm.DoWork();
}
なら ViewModel の参照要らない。

データバインディングがやってることは後者(に近い)。