Silverlight コミュニティでは、XAML のコード ビハインド ファイルを可能な限りコードから解放するために多くの努力が払われています。この背後にある本当の動機は何ですか?
たとえば、イベント ハンドラの代わりにコマンドを使用する利点は何ですか? 私が持っている場合
<Button x:Name="SaveButton" Content="Save" Click="SaveButton_Click" />
...
private void SaveButton_Click(object sender, RoutedEventArgs e) {
_myViewModel.SaveChanges();
}
では、なぜこれが好まれるのでしょうか。
<Button x:Name="SaveButton" Content="Save" Command="{Binding SaveCommand}" />
明らかSaveCommand
に私のビューモデルの が効果的に呼び出す場所SaveChanges()
。
これにより、ビューが 100% XAML であり、ビュー モデルが XAML でインスタンス化されていて、ビューとビュー モデル間の接続がバインディングによって完全に行われている状況が発生する可能性があります。確かにそれはきれいですが、それ以外は何ですか?フレキシブル?なんで?ビューは引き続き適切な ViewModel で動作する必要があるため、2 つの間の接続が存在し、暗黙的である場合は、それをより明示的にしないでください。また、コンパイル時のサポートが失われるという欠点もあります。存在しないイベント ハンドラにボタンを接続すると、コンパイラが教えてくれます。存在しないコマンドにバインドすると、そうはなりません。