복잡한 문제는 아니지만 잘 설명되지 않았습니다. 더 좋은 예를 들어 주시겠습니까?
MVVM 패턴을 사용하고 있습니까? 나는 "CustomersListViewModel"과 "CustomerDetailsViewModel"과 같은 여러보기 및보기 모델에 대한보기를 분해 할 수 있다고 상상합니다.
ListBox를 Customers 컬렉션에 바인딩하고 "SelectItem"을 CustomersListViewModel의 "SelectedCustomer"라는 속성으로 설정하면 CustomersListBox에서 선택 항목이 변경되면 " SelectedCustomerChanged "또는"CustomersDetailsViewModel "(매개 변수로 선택한 고객 전달)을 본질적으로 새로 만들 것입니다. 그러면 새 CustomerDetails가 표시됩니다.
내 생각에 당신은 고객을 바꿔 치기하고있는 콤보 박스의 선택 이벤트를 거친 것이므로 문제가 발생합니다.
CustomersListViewModel
- BindableCollection 고객 (목록 상자의 selectedItem에 바운드)
- 고객 SelectedCustomer
- CustomerDetailViewModel CustomerDetailViewModel을 (리스트 박스에 바인딩) (A 바운드 :
예는 고객의 기 ContentControl)
- SelectedCustomerChanged
CustomerDetailViewModel는 (이 고객 객체의 속성에 바인딩 컨트롤)
- 고객 CurrentCustomer (생성자 PARAMS에서 고객 객체를 수용) (리스트 박스 인 selectionchanged 이벤트에 해고)
"SelectedCustomerChanged"메서드는 다음과 같습니다.
public void SelectedCustomerChanged()
{
this.CustomerDetailViewModel = new CustomerDetailViewModel(this.SelectedCustomer)
// Replace this with some activation of view code?
this.ActivateViewModel(this.CustomerDetailViewModel)
}
내 접근 방식이 맞습니까?
감사합니다. 도움이 되었기를 바랍니다.
벤
안녕하세요 Ben, MVVM 패턴을 사용하고 있지 않습니다. 데이터에 EF를 사용하는 WPF 응용 프로그램입니다. 고객과 함께 목록 상자를로드합니다. 고객이 선택되면 Windows DataContext가 SelectedItem으로 설정됩니다.나는 새로운 고객이 선택 될 때마다 Type이 변경되기 때문에 ComboBox SelectionChanged 이벤트가 시작되었다고 생각합니다. ComboBox 드롭 다운 목록 변경에서 직접 변경하지 않은 경우 ComboBox SelectionChanged가 실행되지 않도록하는 방법을 알아야합니다. – Seecott