DataGrid의 더블 클릭 이벤트를 ViewModel 에서 처리하는 방법입니다. codebehind에서는 간단하게 구현할 수 있지만 MVVM 패턴에서는 DataGrid의 DataGrid.InputBindings 속성을 사용해야 합니다. Gesture 속성에 이벤트를 설정하고 Command 에는 이벤트를 받을 ViewModel의 Command를 Binding 합니다.
✅ MVVM 패턴에서 DataGrid의 더블 클릭 이벤트
View
<DataGrid ItemsSource="{Binding TDataCollection}"
SelectedItem="{Binding SelectedItemVm, Mode=TwoWay}">
<DataGrid.InputBindings>
<MouseBinding
Gesture="LeftDoubleClick"
Command="{Binding SelectedItemChangedCommand}"/>
</DataGrid.InputBindings>
</DataGrid>
Gesture의 LeftDoubleClick 이벤트가 발생 시 Command 에 Binding 되어있는 SelectedItemChangedCommand 가 호출됩니다.
ViewModel
private RelayCommand<object> _selectedItemChangedCommand;
public RelayCommand<object> SelectedItemChangedCommand
{
get
{
if (_selectedItemChangedCommand == null)
_selectedItemChangedCommand
= new RelayCommand<object>(OnSelectedItemChanged);
return _selectedItemChangedCommand;
}
}
private void OnSelectedItemChanged(object obj)
{
// Do Something
}
SelectedItemChangedCommand 에 연결된 OnSelectedItemChanged 가 호출됩니다.
✅ MVVM 패턴에서 DataGrid의 더블 클릭 이벤트 - 끝
관련 포스팅
[WPF] - MVVM 기초 - Command Binding