Silverlight 커뮤니티에는 XAML의 코드 숨김 파일을 가능한 한 무료로 유지하는 데 많은 노력이 필요합니다. 이것의 진정한 동기는 무엇입니까?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과 함께 작동해야하므로, 둘 사이의 연결이 존재하고 암시 적이면 더 명확하게 나타내지 않는 것이 좋습니다. 또한 컴파일 타임 지원을 잃는 단점이 있습니다. 내 버튼을 존재하지 않는 이벤트 핸들러에 연결하면 컴파일러에서 알려줍니다. 존재하지 않는 명령에 바인드하면 안됩니다.
커맨드가 광범위하게 적용되는 어플리케이션이 없다면 추가 타이핑이 무엇을 구매하는지 실제로 알지 못합니다. 당신이 말했듯이, 그것은 viewmodel의 테스트 가능성에 영향을 미치지 않습니다. 일부 코드 숨김 코드가 있으면 해당 뷰 모델에 있어야하는 논리를 몰래 멈출 수 없다는 견해가 있습니다. –
우선 순위는 xaml/codebehind 태그가 아닌 테스트 가능성 때문입니다. 이 질문은 코드 예제에 이러한 대안을 테스트하는 두 가지 방법이 있다면 정말 흥미로울 것입니다. 즉 ViewModel.SaveChanges()에 대한 테스트와 ICommand 기반 테스트입니다. – itchi