pattern mvvm avec event op