문제

명령이 실행 된 후 클릭 이벤트를 시작하는 데 어려움을 겪고 있습니다. 나는 MVVM 스타일의 개발을 따르려고 노력하고 있습니다.

시나리오는 다음과 같습니다.

내 응용 프로그램에는 N 버튼 2의 그리드가 있습니다. 여기서 N은 동적으로로드 된 버튼 세트입니다 (때로는 2 x 2, 때로는 5 x 9, 모르겠습니다). 처음에는 버튼의 모든 열이 첫 번째 열을 제외하고 숨겨집니다. 첫 번째 열을 클릭하면 명령이 실행되고 애니메이션의 페이드가 재생되고 첫 번째 열에서 클릭 한 버튼에 따라 두 번째 열에서 특정 버튼이 표시됩니다. 예를 들어 첫 번째 열에서 상단 버튼을 클릭하면 두 번째 열의 첫 4 개의 버튼이 표시되는 반면 첫 번째 열의 하단 버튼은 두 번째 열의 첫 3 개의 버튼이 표시됩니다.

문제는 다음과 같습니다.

각 버튼마다 첫 번째 열의 각 버튼에 명령 파라미터를 설정했습니다. 명령이 실행되면 데이터가 처리되고 VM에 속성이 설정되어 어떤 버튼을 누르는 지 (CommandParameter를 다시 사용합니다). 데이터가 처리되는 동안 다음 버튼 세트를 사용자에게 표시하고 싶습니다. VM에서 CommandParameter를 가져 와서 적절한 버튼을 보여주기 위해 애니메이션을 연주하는 클릭 이벤트가 있습니다.

그러나 문제는 WPF가 명령이 발사되기 전에 먼저 클릭 이벤트를 수행하는 것을 좋아한다는 것입니다. VM의 속성이 클릭 한 버튼이 설정되지 않았기 때문에 문제가됩니다!

그래서 그것은 몇 가지 질문에 나를 데려옵니다 ...

1) 이벤트를 해고하기 전에 명령을 실행하는 방법이 있습니까?

2) 내가 제대로하고 있습니까? :피

도움이 되었습니까?

해결책

클릭 이벤트 핸들러를 사용하는 대신 버튼에 Datatriggers를 설정할 수 있습니다.

그들은 뷰 모델의 속성에 응답하고, 표시하고 싶지 않은 버튼을 숨기고, 당신이하는 버튼을 보여줄 수 있습니다.

이것에 대한 좋은 점은 당신의보기가 XAML에서 완전히 수행 될 수 있고, 뷰 모델은 단지 상태를 설정하는 것입니다 (예 :이 상태에 있습니다). 바인딩이 새로운 Datatrigger가 발생하기 때문에보기는 자동으로 업데이트됩니다. 불.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top