문제

시나리오 : (숫자) 텍스트 상자, 버튼 및 레이블이 있습니다. 버튼이 클릭되면 라벨이 텍스트 상자의 숫자 값에 "애니메이션"을 원합니다 (회전 다이얼과 같은).

주어진:

a) 스토리 보드의 애니메이션은 (프레임 워크가 아니기 때문에) Databindings를 가질 수 없습니다. b) Silverlight의 트리거 부족

View Model과 The View의 스토리 보드에 가장 적은 커플 링을 사용하면 버튼을 클릭 할 때 대상 애니메이션 값을 업데이트하고 애니메이션을 시작하는 방법은 무엇입니까?

참고 : 시나리오는 개념적이므로 '애니메이션'숫자 등의 세부 사항에 집중하지 마십시오.

도움이 되었습니까?

해결책

당신의 목표가 견해에서 코드-홀드를 줄이려는 목표라면 라벨에 첨부 된 동작이 이에 효과가 있다고 생각합니다. 레이블에 첨부 된 동작은 애니메이션으로 표시 할 숫자를 노출 시키고이 숫자가 변경되면 (코드로) 기존 값에서 새 값으로 애니메이션으로 실행됩니다.

한 가지 단점은 필요에 따라로드하고 템플릿 값을 교체 할 수있는 어딘가에 템플릿 (시작할 가짜 값 만) 버전을 저장하지 않는 한 애니메이션이 코드에 있다는 것입니다.

이것 Josh Smith의 기사 첨부 된 행동에 대한 권위자 인 것 같습니다.

http://joshsmithonwpf.wordpress.com/2008/08/30/introduction-to-attached-behaviors/

다른 팁

최근에 MVVM 응용 프로그램에서 비슷한 문제를 해결해야했습니다. 내 문제는 컨테이너의 높이를 0에서 자동으로 애니메이션해야한다는 것입니다. Auto는 동적 값이므로 나는 애니메이션 (또는 스토리 보드)이 주문형에서 구축 (또는 조작)해야한다는 것을 인식했습니다. 내가 제자리에 설치 한 솔루션은 View Code-Behind를 사용하여 애니메이션을 업데이트하고 발사했습니다.

이것은 가장 MVVM 친화적 인 접근 방식이 아닙니다. 그러나 WPF의 애니메이션은 XAML에서 까다로울 수 있습니다. 이 솔루션은 실제로 XAML 제한을위한 해결 방법 일 뿐이므로 코드를보기에 직접 묶어도 괜찮습니다. 마찬가지로,보기가 조롱된다면 애니메이션에 대한 프레임 워크 요소가 없으므로이 코드를 VM 측에 배치하는 것은 의미가 없습니다.

아무도 더 나은 접근 방식을 가지고 있습니까?

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