2017-11-28 4 views
0

애니메이션 값이 변경 될 때마다 코드를 실행하는 방법이 필요합니다. 이 코드는 컨트롤이 그려지기 전에 움직이는 컨트롤의 '새로운'레이아웃에 대한 액세스를 갖습니다.애니메이션 중 각 값 업데이트 후 코드를 실행하는 WPF 애니메이션 만들기

예를 들어 스토리 보드에서 애니메이션 된 "길이"종속성 속성이 있습니다. 그것은 userControl, A (바인딩을 통해 길이와 높이 모두)의 크기를 업데이트합니다. 애니메이션 동안 각 값을 Length로 업데이트 한 후에 다른 userControl, B의 내용을 수정하는 메서드를 실행하고 싶습니다.이 메서드는 userControl A의 새 레이아웃 차원에 액세스 할 수 있어야합니다. A가 시각적으로 그려 지므로 렌더링이 최종적으로 수행 될 때 A와 B가 모두 사용자 관점에서 함께 변경됩니다. PropertyChangedCallback을 사용하여 length dependencyProperty를 사용해 보았습니다.하지만 컨트롤이 초기에 (간략하게) 사용자와 동기화되지 않아서 너무 늦게 나타납니다. 이상적으로는 같은 것이다 : 계산

  • 어딘가에 UserControl을 소위 새로운 차원에 UpdateLayout을 호출

    • 세트 길이 종속성 속성 값을
    • 내 방법이 UserControl을 A가
    • UserControl을 B 렌더링되기 전에 호출되는 수정
    • 마지막으로 모든

    내 문자 문제를 화면에 렌더링

  • 훨씬 MOR입니다 전자 복잡하므로 코드를 제공하지 않을 것이고, 이것은 해결하고자하는 정확한 문제이므로 대안이 아닌 아이디어 만 찾고 있습니다.

  • +0

    내 경험에 따르면 프로그래밍 방식으로이 작업을 수행해야한다고해도 스토리 보드에 컨트롤 B를 포함하는 것이 더 쉬울 것이라고 생각합니다. –

    +0

    그건 내 문제를 해결하지 못합니다. 사용자 컨트롤 B를 제어하는 ​​메서드는 A가 표시되기 전에 사용자 컨트롤 A의 새 측정 값에 대한 액세스 권한을 가져야합니다. 듀얼 애니메이션 스토리 보드에서는 그렇게 할 수 없습니다. 이것은 속이는 문제입니다. – Sean

    답변

    0

    대답은 PropertyChangedCallback 이벤트 대신 SizeChanged 이벤트를 사용하는 것이 었습니다 . SizeChanged에는 이전 및 새로운 측정 값이 모두 있으며 아직 그려지지 않았습니다. 완전한.