얼마 전에이 tutorial으로 MVVM 패턴을 연구하기 시작했습니다. 나는 MicroMvvm을 사용한다.WPF DataGrid의 현재 요소를 가져 오는 방법과 함께 DataGrid로 무언가를 처리하는 방법은 무엇입니까?
EntityFramework 모델을 사용하는 WPF 프로젝트가 있습니다. ViewModels 및 XAML 뷰를 작성했습니다. . 내가 데이터 그리드 내 데이터를 표시 할 : 내 LibraryViewModel.cs에서
<DataGrid Height="250" ItemsSource="{Binding Books}" AutoGenerateColumns="False" >
<DataGrid.Resources>
<DataTemplate x:Key="DeleteTemplate" >
<Button x:Name="DeleteButton" Command="{Binding DeleteBook, Mode=OneWay}" CommandParameter="{Binding}" >Delete</Button>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Title}" Header="Book"/>
<DataGridTextColumn Binding="{Binding Author}" Header="Author"/>
<DataGridTemplateColumn CellTemplate="{StaticResource EditTemplate}" Header="Редактировать"/>
<DataGridTemplateColumn CellTemplate="{StaticResource DeleteTemplate}" Header="Удалить"/>
</DataGrid.Columns>
</DataGrid>
을 (데이터 2 열 및 2 buttoncolumn 편집, 삭제)
#region Commands
void DeleteBookExecute()
{
if (_books == null)
return;
//MessageBox.Show("This is delete button. Delete item id:" myMysticalObjectFromCommandParameter);
}
bool CanDeleteBookExecute()
{
return true;
}
public ICommand DeleteBook
{
get
{
return new RelayCommand(DeleteBookExecute, CanDeleteBookExecute);
}
}
나는 버튼을 눌러
(삭제/edit) 현재 객체를 삭제/편집하고 싶습니다. MVVM에서이를 수행하는 방법을 모르겠습니다.Command="{Binding DeleteBook, Mode=OneWay}" CommandParameter="{Binding}"
으로 처리 할 수 있습니까?
올바른 경우 내 LibraryViewModel에서 CommandParameter
의 데이터를 가져올 수 있습니까?
LibraryViewModel.cs에서이 개체를 어떻게 가져올 수 있는지 이해할 수 없습니다. void DeleteBookExecute() {?}. 그런 식으로이 방법을 다시 작성 하시겠습니까? void DeleteBookExecute (object param) param에 내 행 객체가 있습니까? 그렇지 않다면 ... – chromigo
@chromigo : 그래야합니다. 매개 변수는 WPF 마법에 의해 자동으로 전달됩니다 ... – Marc
도움을 주셔서 감사합니다. MicroMvvm 메서드를 변경하면 (DHN이 말한 것처럼 1 param을 취함) evrything이 효과가있었습니다. – chromigo