현재 MVVM/명령 및 ControlTemplates를 사용 중입니다. 내가하려는 것은 상당히 간단합니다. 예를 들어 목록을 갖고 싶습니다. 사용자는 사용자가 각 사용자에 대해 작업을 실행할 수 있습니다. 그러나 이벤트/명령 핸들러는 person 객체가 아닌 실행될 필요가 있습니다. 단추로 목록에서 제거하기를 원하기 때문입니다.MVVM/명령 및 제어 템플릿
그래서 지금까지 PersonVM의 목록과 각 사람 객체의 객체를 표시하는 VM을 작성했습니다. 그런 다음 내 사람을 표시하는 ItemsControl이 포함 된 ControlTemplate을 사용하여 CustomControl을 만들었습니다.
모든 데이터가 훌륭하게 표시되며 아무런 문제가 없습니다.
그런 다음 사용자가 목록에서 사람을 삭제할 수있는 부분을 추가하려고했습니다. 그래서 나는 datatemplate에 버튼을 추가했습니다. 여전히 문제는 아닙니다.
다음 단계는 단추에 의해 트리거되는 명령을 노출하는 것입니다.
첫 번째 방법은 Josh Smiths RelayCommand를 사용하는 것이 었습니다. 그래서 그 중 하나를 PersonViewModel에 추가하고 단추에 바인딩했습니다. 작동하지만 문제는 부모 VM이 처리해야하는 이벤트 (명령 실행 후)를 발생시켜야한다는 것입니다. Imho는 좋지 않습니다. 코드가 점점 커지면서 코드가 더러워졌습니다.
그래서 RoutedCommand를 사용하기 위해 모든 작업을 수정하고 컨트롤 계층의 상위 수준에서 CommandBinding을 추가하려고했습니다. 하지만 ControlTemplate이 viewmodel에서 메서드를 호출 할 수 없기 때문에이 방법은 불가능합니다.
그래서이 문제에 대한 올바른 접근 방식이 궁금합니다. 아무 래도 나는 잘못된 길을 가고 있다고 믿지만, 나는 어디 있는지 보지 못한다.
TIA 마틴
내 주요 모델이 명령을 노출시키지 않아서 내 자식 VM이이를 노출하고 있으므로 내 경우에는 작동하지 않습니다. –