ComboBox에 CustomerViewModels의 목록이 있습니다. 선택한 CustomerViewModel과 삭제 된 고객이 리포지토리에서 CustomerViewModel을 제거합니다.MVVM : CustomerViewModel을 삭제하지만 내부에 Customer 모델을 가져 오는 방법은 무엇입니까?
그러나 CustomerViewModel에서 Customer 모델에 어떻게 액세스 할 수 있습니까?
ComboBox에 CustomerViewModels의 목록이 있습니다. 선택한 CustomerViewModel과 삭제 된 고객이 리포지토리에서 CustomerViewModel을 제거합니다.MVVM : CustomerViewModel을 삭제하지만 내부에 Customer 모델을 가져 오는 방법은 무엇입니까?
그러나 CustomerViewModel에서 Customer 모델에 어떻게 액세스 할 수 있습니까?
CustomerViewModels 컬렉션을 CustomerViewModels의 ObserableCollection으로 만듭니다. 이 당신을 구입하는 것을 당신이 모델을 조작 할 수 거기에서 있도록, 수집 즉, 삭제에 대한 변경 대리자에들을 수 있다는 CollectionChanged 이벤트입니다 따라
http://msdn.microsoft.com/en-us/library/ms653375(VS.85).aspx
아마도 뭔가
public class CustomersViewModel: ViewModelBase
{
public ObservableCollection<CustomersViewModel> Customers { get; private set; }
public CustomersViewModel()
{
Customers = new ObservableCollection<CustomersViewModel>(GetCustomers());
Customers.CollectionChanged +=
(sender, args) =>
{
if (args.Action == NotifyCollectionChangedAction.Remove)
{
foreach (CustomerViewModel customerViewModel in args.NewItems)
{
DeleteCustomer(customerViewModel.Customer);
}
}
};
}
private void DeleteCustomer(Customer customer)
{
// Call into your repo and delete the customer.
}
private List<CustomersViewModel> GetCustomers()
{
// Call into your model and return customers.
}
... ICommands ect...
}
같은
ObservableCollection 등을 이미 사용하고 있습니다 ... 여기에는 설치가 잘되어있어 CustomerViewModel 클래스의 고객 개체가 인스턴스 이름의 시작 부분에 "_"문자가 있습니다. "SchoolclassViewModel"을 입력했을 때 나는 그것을 보지 못했습니다. 나는 어쩌면 내 오타를 보았다 wouldnt가 해당 게시물하지 않고 다시 ... 고객을 얻을 수 들으; 공공 Schoolclass SelectedSchoolclass {} GET {반환 _schoolclass} : ;-) 나는 CustomerViewModel에 넣고 ; P – msfanboy
:) 언제든지 –
Customer
내 CustomerViewModel
에 이미 액세스했을 수 있습니다. (VieModel은 Customer
의 속성을 노출해야하므로 뷰에서 데이터 바인딩 할 수 있음) 일반적으로을 노출하여이 작업을 수행합니다.또는 직접 사본).
요점은 이이 아니어야합니다. Customer
자신을 삭제하는 것입니다. 그게 ViewModel
에 대한 것이고, ICommand
은 관련 Customer
을 삭제합니다. 사용중인 MVVM 프레임 워크에 따라 DelegateCommand
또는 이와 동등한 제품을 살펴보십시오.
귀하의 CustomerViewModel
public ICommand DeleteCommand { get; private set; }
있을 것와보기 바인딩 것 CommandTarget
(아마 Button
)이 명령에. 명령을 실행하면 CustomerViewModel
의 개인 메서드가 실행되고 삭제 메커니즘을 코드의 다른 부분에 노출시키지 않고 Customer
을 삭제할 수 있습니다. 예를 들어 :
public CustomerViewModel()
{
this.DeleteCommand = new DelegateCommand(this.ExecuteDeleteCommand);
}
private void ExecuteDeleteCommand()
{
// remove the Customer from the ObservableCollection of customers
// and also delete it from the database, or do anything else you want
}
도 완벽하게 유효합니다. –
는 잘 작동 할 수 : _customerRepo.Delete (새 고객() { 의 CustomerID = SelectedCustomerViewModel.CustomerID, FIRSTNAME = SelectedCustomerViewModel.FirstName, }); – msfanboy